1ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson/*
2ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * Copyright (C) 2008 The Android Open Source Project
315c7eb9ba46119290695b650d23180884f1156faArun Kumar K.R * Copyright (c) 2010,2014, The Linux Foundation. All rights reserved.
4ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson *
5ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * Licensed under the Apache License, Version 2.0 (the "License");
6ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * you may not use this file except in compliance with the License.
7ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * You may obtain a copy of the License at
8ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson *
9ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson *      http://www.apache.org/licenses/LICENSE-2.0
10ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson *
11ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * Unless required by applicable law or agreed to in writing, software
12ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * distributed under the License is distributed on an "AS IS" BASIS,
13ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * See the License for the specific language governing permissions and
15ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson * limitations under the License.
16ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson */
17ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
18ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#ifndef FB_PRIV_H
19ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#define FB_PRIV_H
20ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#include <linux/fb.h>
21ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#include <linux/msm_mdp.h>
22ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
23ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#define NUM_FRAMEBUFFERS_MIN  2
24ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#define NUM_FRAMEBUFFERS_MAX  3
25ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
26ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#define NO_SURFACEFLINGER_SWAPINTERVAL
27ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#define COLOR_FORMAT(x) (x & 0xFFF) // Max range for colorFormats is 0 - FFF
28ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
29ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilsonstruct private_handle_t;
30ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
31ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilsonenum {
32ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    // flag to indicate we'll post this buffer
33ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    PRIV_USAGE_LOCKED_FOR_POST = 0x80000000,
34ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    PRIV_MIN_SWAP_INTERVAL = 0,
35ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    PRIV_MAX_SWAP_INTERVAL = 1,
36ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson};
37ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
38ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilsonstruct private_module_t {
39ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    gralloc_module_t base;
40ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    struct private_handle_t* framebuffer;
41ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    uint32_t fbFormat;
42ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    uint32_t flags;
43ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    uint32_t numBuffers;
4492e456fd92a6231dbf5d9de5289ed2f84841a804Saurabh Shah    uint32_t bufferMask;
45ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    pthread_mutex_t lock;
46ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    private_handle_t *currentBuffer;
47ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    struct fb_var_screeninfo info;
48ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    struct mdp_display_commit commit;
49ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    struct fb_fix_screeninfo finfo;
50ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    float xdpi;
51ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    float ydpi;
52ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    float fps;
53ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson    uint32_t swapInterval;
54ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson};
55ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
56ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
57ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson
58ef53c1c84ec55ed50f607d52b7abfbb86239408eSimon Wilson#endif /* FB_PRIV_H */
59