107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani/* 207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * Copyright (c) 2014, The Linux Foundation. All rights reserved. 307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * 407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * Redistribution and use in source and binary forms, with or without 507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * modification, are permitted provided that the following conditions are 607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * met: 707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Redistributions of source code must retain the above copyright 807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * notice, this list of conditions and the following disclaimer. 907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Redistributions in binary form must reproduce the above 1007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * copyright notice, this list of conditions and the following 1107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * disclaimer in the documentation and/or other materials provided 1207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * with the distribution. 1307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * * Neither the name of The Linux Foundation nor the names of its 1407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * contributors may be used to endorse or promote products derived 1507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * from this software without specific prior written permission. 1607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * 1707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 1807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 2007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 2107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani */ 2907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <hwc_qdcm.h> 3107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <hwc_utils.h> 3207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <utils/String16.h> 3307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include <mdp_version.h> 3407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include "mode_manager.h" 3507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include "libmm-disp-apis.h" 3607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani#include "IQService.h" 3707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 3807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniusing namespace android; 3907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniusing namespace qService; 4007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniusing namespace qhwc; 4107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaniusing namespace qmode; 4207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 4307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malaninamespace qQdcm { 4407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani//---------------------------------------------------------------------------- 4507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanivoid qdcmInitContext(hwc_context_t *ctx) 4607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 4707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani loadQdcmLibrary(ctx); 4807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 4907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 5007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanivoid qdcmCloseContext(hwc_context_t *ctx) 5107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 5207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode) { 5307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani unloadQdcmLibrary(ctx); 5407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 5507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 5607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 5707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanivoid qdcmApplyDefaultAfterBootAnimationDone(hwc_context_t *ctx) 5807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 5907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode) 6007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ctx->mQdcmInfo.mQdcmMode->applyDefaultMode(0); 6107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 6207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 6307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmSetActiveMode(hwc_context_t *ctx, const Parcel *in, Parcel *out) 6407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 6507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 6607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 6707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 6807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 6907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct SET_MODE_PROP_IN params = 7007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani { (disp_id_type)in->readInt32(), in->readInt32()}; 7107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 7207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_SET_ACTIVE_MODE, 7307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (void *)¶ms, (void *)NULL); 7407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 7507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 7607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 7707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 7807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 7907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmSetDefaultMode(hwc_context_t *ctx, const Parcel *in, Parcel *out) 8007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 8107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 8207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 8307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 8407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 8507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct SET_MODE_PROP_IN params = 8607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani { (disp_id_type)in->readInt32(), in->readInt32()}; 8707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 8807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_SET_DEFAULT_MODE, 8907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (void *)¶ms, (void *)NULL); 9007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 9107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 9207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 9307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 9407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 9507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmGetDefaultMode(hwc_context_t *ctx, 9607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani const Parcel *in, Parcel *out) 9707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 9807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 9907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 10107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int params = in->readInt32(); 10307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int modeid = 0; 10407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_GET_DEFAULT_MODE, 10607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, (void *)&modeid); 10707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 10807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(modeid); 10907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 11007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 11107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 11207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 11307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmGetColorBalanceRange(hwc_context_t *ctx __unused, 11407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani const Parcel *in __unused, Parcel *out __unused) 11507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 11607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 11707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 11807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmGetColorBalance(hwc_context_t *ctx, 11907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani const Parcel *in, Parcel *out) 12007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 12107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 12207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 12307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 12407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 12507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int params = in->readInt32(); 12607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int warmness = 0; 12707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 12807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_GET_CB, 12907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, (void *)&warmness); 13007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 13107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(warmness); 13207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 13307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 13407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 13507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 13607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmSetColorBalance(hwc_context_t *ctx, 13707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani const Parcel *in, Parcel *out) 13807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 13907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 14007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 14107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 14207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 14307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct SET_CB_IN params = 14407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani { (disp_id_type)in->readInt32(), in->readInt32() }; 14507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 14607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ALOGD_IF(QDCM_DEBUG, "%s dispID = %d, warmness = %d\n", 14707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani __FUNCTION__, params.id, params.warmness); 14807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 14907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_SET_CB, 15007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, NULL); 15107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 15207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 15307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 15407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 15507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 15607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmSaveModeV2(hwc_context_t *ctx, const Parcel *in, Parcel *out) 15707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 15807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 15907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 16007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 16107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 16207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct SAVE_DISPLAY_MODE_V2_IN params = 16307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani { (disp_id_type)in->readInt32(), 16407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani in->readCString(), 16507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (uint32_t)in->readInt32(), 16607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani in->readInt32() 16707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani }; 16807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int value = 0; 16907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 17007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_SAVE_MODE_V2, 17107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, (void *)&value); 17207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 17307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value); 17407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 17507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 17607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 17707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 17807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmSetPaConfig(hwc_context_t *ctx, const Parcel *in, Parcel *out) 17907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 18007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 18107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 18207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 18307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 18407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct SET_PA_CONFIG_IN params; 18507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 18607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.id = (disp_id_type)in->readInt32(); 18707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.ops = in->readInt32(); 18807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.data.hue = in->readInt32(); 18907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.data.saturation = in->readInt32(); 19007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.data.value = in->readInt32(); 19107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.data.contrast = in->readInt32(); 19207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani params.pa.data.sat_thresh = in->readInt32(); 19307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 19407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_SET_PA_CONFIG, 19507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, NULL); 19607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 19707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 19807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 19907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 20007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 20107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmGetPaConfig(hwc_context_t *ctx, const Parcel *in, Parcel *out) 20207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 20307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 20407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 20507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 20607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 20707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int params = in->readInt32(); 20807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct disp_pa_config value; 20907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 21007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_GET_PA_CONFIG, 21107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, (void *)&value); 21207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 21307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.ops); 21407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.data.hue); 21507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.data.saturation); 21607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.data.value); 21707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.data.contrast); 21807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.data.sat_thresh); 21907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 22007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 22107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 22207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 22307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 22407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanistatic void qdcmGetPaRange(hwc_context_t *ctx, const Parcel *in, Parcel *out) 22507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 22607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int ret = 0; 22707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 22807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani if (ctx->mQdcmInfo.mQdcmMode && in && out) { 22907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 23007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int params = in->readInt32(); 23107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani struct disp_pa_range value; 23207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 23307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ret = ctx->mQdcmInfo.mQdcmMode->requestRoute((int)CMD_GET_PA_RANGE, 23407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani (const void *)¶ms, (void *)&value); 23507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 23607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.max.hue); 23707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.max.saturation); 23807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.max.value); 23907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.max.contrast); 24007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.max.sat_thresh); 24107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.min.hue); 24207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.min.saturation); 24307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.min.value); 24407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.min.contrast); 24507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(value.min.sat_thresh); 24607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 24707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani out->writeInt32(ret); //return operation status via binder. 24807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 24907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 25007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 25107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malanivoid qdcmCmdsHandler(hwc_context_t *ctx, const Parcel *in, Parcel *out) 25207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani{ 25307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani int subcmd = in->readInt32(); 25407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 25507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani ALOGD_IF(QDCM_DEBUG, "%s enter subcmd = %d\n", __FUNCTION__, subcmd); 25607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani switch (subcmd) { 25707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_SET_ACTIVE_MODE: 25807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmSetActiveMode(ctx, in, out); 25907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 26007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_SET_DEFAULT_MODE: 26107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmSetDefaultMode(ctx, in, out); 26207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 26307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_GET_DEFAULT_MODE: 26407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmGetDefaultMode(ctx, in, out); 26507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 26607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_GET_CB_RANGE: 26707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmGetColorBalanceRange(ctx, in, out); 26807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 26907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_GET_CB: 27007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmGetColorBalance(ctx, in, out); 27107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 27207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_SET_CB: 27307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmSetColorBalance(ctx, in, out); 27407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 27507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_SAVE_MODE_V2: 27607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmSaveModeV2(ctx, in, out); 27707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 27807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_SET_PA_CONFIG: 27907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmSetPaConfig(ctx, in, out); 28007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 28107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_GET_PA_CONFIG: 28207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmGetPaConfig(ctx, in, out); 28307bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 28407bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani case CMD_GET_PA_RANGE: 28507bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani qdcmGetPaRange(ctx, in, out); 28607bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani break; 28707bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani } 28807bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} 28907bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 29007bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 29107bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani} //namespace qQdcm 29207bbf1e89c031a5d41a7561433e832d396c311a5Prashant Malani 293