12ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel/*
22ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Copyright (C) 2008 The Android Open Source Project
32ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
42ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *
52ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Licensed under the Apache License, Version 2.0 (the "License");
62ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * you may not use this file except in compliance with the License.
72ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * You may obtain a copy of the License at
82ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *
92ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *      http://www.apache.org/licenses/LICENSE-2.0
102ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *
112ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Unless required by applicable law or agreed to in writing, software
122ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * distributed under the License is distributed on an "AS IS" BASIS,
132ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
142ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * See the License for the specific language governing permissions and
152ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * limitations under the License.
162ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel */
172ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
182ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#ifndef FB_PRIV_H
192ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define FB_PRIV_H
202ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <linux/fb.h>
212ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <linux/msm_mdp.h>
222ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
232ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define NUM_FRAMEBUFFERS_MIN  2
242ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define NUM_FRAMEBUFFERS_MAX  3
252ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
262ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define NO_SURFACEFLINGER_SWAPINTERVAL
272ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define COLOR_FORMAT(x) (x & 0xFFF) // Max range for colorFormats is 0 - FFF
282ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
292ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelstruct private_handle_t;
302ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
312ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelenum {
322ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    // flag to indicate we'll post this buffer
332ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    PRIV_USAGE_LOCKED_FOR_POST = 0x80000000,
342ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    PRIV_MIN_SWAP_INTERVAL = 0,
352ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    PRIV_MAX_SWAP_INTERVAL = 1,
362ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel};
372ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
382ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelstruct private_module_t {
392ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    gralloc_module_t base;
402ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    struct private_handle_t* framebuffer;
412ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    uint32_t fbFormat;
422ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    uint32_t flags;
432ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    uint32_t numBuffers;
442ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    uint32_t bufferMask;
452ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    pthread_mutex_t lock;
462ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    struct fb_var_screeninfo info;
472ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    struct fb_fix_screeninfo finfo;
482ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    float xdpi;
492ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    float ydpi;
502ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    float fps;
512ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    uint32_t swapInterval;
522ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel};
532ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
542ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
552ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
562ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#endif /* FB_PRIV_H */
57