leo: add stuff so that the qs8k stuff compiles
This commit is contained in:
parent
be58162e10
commit
75b6aa8c92
@ -59,7 +59,7 @@ BOARD_KERNEL_NEW_PPPOX := true
|
||||
BOARD_HAVE_BLUETOOTH := true
|
||||
BOARD_HAVE_BLUETOOTH_BCM := true
|
||||
|
||||
BOARD_VENDOR_QCOM_AMSS_VERSION := 1550
|
||||
BOARD_VENDOR_QCOM_AMSS_VERSION := 3200
|
||||
|
||||
BOARD_VENDOR_USE_AKMD := akm8973
|
||||
|
||||
@ -68,12 +68,12 @@ BOARD_VENDOR_USE_AKMD := akm8973
|
||||
TARGET_USES_16BPPSURFACE_FOR_OPAQUE := true
|
||||
BOARD_NO_RGBX_8888 := true
|
||||
BOARD_USES_QCOM_LIBS := true
|
||||
#BOARD_USES_QCOM_HARDWARE := true
|
||||
BOARD_USES_QCOM_HARDWARE := true
|
||||
|
||||
BOARD_USE_KINETO_COMPATIBILITY := true
|
||||
|
||||
#BOARD_HAVE_FM_RADIO := true
|
||||
#BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO
|
||||
BOARD_HAVE_FM_RADIO := true
|
||||
BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO
|
||||
|
||||
TARGET_CUSTOM_RELEASETOOL := device/htc/leo/releasetools/squisher
|
||||
|
||||
@ -106,8 +106,9 @@ TARGET_PREBUILT_RECOVERY_KERNEL := device/htc/leo/prebuilt/recovery_kernel
|
||||
# Hardware rendering
|
||||
#USE_OPENGL_RENDERER := true
|
||||
BOARD_EGL_CFG := device/htc/leo/prebuilt/egl.cfg
|
||||
|
||||
#temp hw hack
|
||||
BOARD_NO_RGBX_8888 := true
|
||||
#BOARD_USES_OVERLAY := true
|
||||
#COMMON_GLOBAL_CFLAGS += -DBOARD_GL_OES_EGL_IMG_EXTERNAL_HACK
|
||||
BOARD_USES_OVERLAY := true
|
||||
COMMON_GLOBAL_CFLAGS += -DMISSING_EGL_EXTERNAL_IMAGE -DMISSING_EGL_PIXEL_FORMAT_YV12 -DMISSING_GRALLOC_BUFFERS -DUNABLE_TO_DEQUEUE
|
||||
|
||||
# Call headers from msm-3.0: needed to build libs in hardware/qcom/display
|
||||
TARGET_SPECIFIC_HEADER_PATH := device/htc/leo/include
|
||||
|
185
include/android_pmem.h
Normal file
185
include/android_pmem.h
Normal file
@ -0,0 +1,185 @@
|
||||
/* include/linux/android_pmem.h
|
||||
*
|
||||
* Copyright (C) 2007 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _ANDROID_PMEM_H_
|
||||
#define _ANDROID_PMEM_H_
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
#define PMEM_KERNEL_TEST_MAGIC 0xc0
|
||||
#define PMEM_KERNEL_TEST_NOMINAL_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 1)
|
||||
#define PMEM_KERNEL_TEST_ADVERSARIAL_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 2)
|
||||
#define PMEM_KERNEL_TEST_HUGE_ALLOCATION_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 3)
|
||||
#define PMEM_KERNEL_TEST_FREE_UNALLOCATED_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 4)
|
||||
#define PMEM_KERNEL_TEST_LARGE_REGION_NUMBER_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 5)
|
||||
|
||||
#define PMEM_IOCTL_MAGIC 'p'
|
||||
#define PMEM_GET_PHYS _IOW(PMEM_IOCTL_MAGIC, 1, unsigned int)
|
||||
#define PMEM_MAP _IOW(PMEM_IOCTL_MAGIC, 2, unsigned int)
|
||||
#define PMEM_GET_SIZE _IOW(PMEM_IOCTL_MAGIC, 3, unsigned int)
|
||||
#define PMEM_UNMAP _IOW(PMEM_IOCTL_MAGIC, 4, unsigned int)
|
||||
/* This ioctl will allocate pmem space, backing the file, it will fail
|
||||
* if the file already has an allocation, pass it the len as the argument
|
||||
* to the ioctl */
|
||||
#define PMEM_ALLOCATE _IOW(PMEM_IOCTL_MAGIC, 5, unsigned int)
|
||||
/* This will connect a one pmem file to another, pass the file that is already
|
||||
* backed in memory as the argument to the ioctl
|
||||
*/
|
||||
#define PMEM_CONNECT _IOW(PMEM_IOCTL_MAGIC, 6, unsigned int)
|
||||
/* Returns the total size of the pmem region it is sent to as a pmem_region
|
||||
* struct (with offset set to 0).
|
||||
*/
|
||||
#define PMEM_GET_TOTAL_SIZE _IOW(PMEM_IOCTL_MAGIC, 7, unsigned int)
|
||||
/* Revokes gpu registers and resets the gpu. Pass a pointer to the
|
||||
* start of the mapped gpu regs (the vaddr returned by mmap) as the argument.
|
||||
*/
|
||||
#define HW3D_REVOKE_GPU _IOW(PMEM_IOCTL_MAGIC, 8, unsigned int)
|
||||
#define HW3D_GRANT_GPU _IOW(PMEM_IOCTL_MAGIC, 9, unsigned int)
|
||||
#define HW3D_WAIT_FOR_INTERRUPT _IOW(PMEM_IOCTL_MAGIC, 10, unsigned int)
|
||||
|
||||
#define PMEM_CLEAN_INV_CACHES _IOW(PMEM_IOCTL_MAGIC, 11, unsigned int)
|
||||
#define PMEM_CLEAN_CACHES _IOW(PMEM_IOCTL_MAGIC, 12, unsigned int)
|
||||
#define PMEM_INV_CACHES _IOW(PMEM_IOCTL_MAGIC, 13, unsigned int)
|
||||
|
||||
#define PMEM_GET_FREE_SPACE _IOW(PMEM_IOCTL_MAGIC, 14, unsigned int)
|
||||
#define PMEM_ALLOCATE_ALIGNED _IOW(PMEM_IOCTL_MAGIC, 15, unsigned int)
|
||||
struct pmem_region {
|
||||
unsigned long offset;
|
||||
unsigned long len;
|
||||
};
|
||||
|
||||
struct pmem_addr {
|
||||
unsigned long vaddr;
|
||||
unsigned long offset;
|
||||
unsigned long length;
|
||||
};
|
||||
|
||||
struct pmem_freespace {
|
||||
unsigned long total;
|
||||
unsigned long largest;
|
||||
};
|
||||
|
||||
struct pmem_allocation {
|
||||
unsigned long size;
|
||||
unsigned int align;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
int get_pmem_file(unsigned int fd, unsigned long *start, unsigned long *vstart,
|
||||
unsigned long *end, struct file **filp);
|
||||
int get_pmem_fd(int fd, unsigned long *start, unsigned long *end);
|
||||
int get_pmem_user_addr(struct file *file, unsigned long *start,
|
||||
unsigned long *end);
|
||||
void put_pmem_file(struct file* file);
|
||||
void put_pmem_fd(int fd);
|
||||
void flush_pmem_fd(int fd, unsigned long start, unsigned long len);
|
||||
void flush_pmem_file(struct file *file, unsigned long start, unsigned long len);
|
||||
int pmem_cache_maint(struct file *file, unsigned int cmd,
|
||||
struct pmem_addr *pmem_addr);
|
||||
|
||||
enum pmem_allocator_type {
|
||||
/* Zero is a default in platform PMEM structures in the board files,
|
||||
* when the "allocator_type" structure element is not explicitly
|
||||
* defined
|
||||
*/
|
||||
PMEM_ALLOCATORTYPE_BITMAP = 0, /* forced to be zero here */
|
||||
PMEM_ALLOCATORTYPE_SYSTEM,
|
||||
|
||||
PMEM_ALLOCATORTYPE_ALLORNOTHING,
|
||||
PMEM_ALLOCATORTYPE_BUDDYBESTFIT,
|
||||
|
||||
PMEM_ALLOCATORTYPE_MAX,
|
||||
};
|
||||
|
||||
#define PMEM_MEMTYPE_MASK 0x7
|
||||
#define PMEM_INVALID_MEMTYPE 0x0
|
||||
#define PMEM_MEMTYPE_EBI1 0x1
|
||||
#define PMEM_MEMTYPE_SMI 0x2
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID2 0x3
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID3 0x4
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID4 0x5
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID5 0x6
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID6 0x7
|
||||
|
||||
#define PMEM_ALIGNMENT_MASK 0x18
|
||||
#define PMEM_ALIGNMENT_RESERVED_INVALID1 0x0
|
||||
#define PMEM_ALIGNMENT_4K 0x8 /* the default */
|
||||
#define PMEM_ALIGNMENT_1M 0x10
|
||||
#define PMEM_ALIGNMENT_RESERVED_INVALID2 0x18
|
||||
|
||||
/* flags in the following function defined as above. */
|
||||
int32_t pmem_kalloc(const size_t size, const uint32_t flags);
|
||||
int32_t pmem_kfree(const int32_t physaddr);
|
||||
|
||||
/* kernel api names for board specific data structures */
|
||||
#define PMEM_KERNEL_EBI1_DATA_NAME "pmem_kernel_ebi1"
|
||||
#define PMEM_KERNEL_SMI_DATA_NAME "pmem_kernel_smi"
|
||||
|
||||
struct android_pmem_platform_data
|
||||
{
|
||||
const char* name;
|
||||
/* size of memory region */
|
||||
unsigned long size;
|
||||
|
||||
enum pmem_allocator_type allocator_type;
|
||||
/* treated as a 'hidden' variable in the board files. Can be
|
||||
* set, but default is the system init value of 0 which becomes a
|
||||
* quantum of 4K pages.
|
||||
*/
|
||||
unsigned int quantum;
|
||||
|
||||
/* set to indicate maps of this region should be cached, if a mix of
|
||||
* cached and uncached is desired, set this and open the device with
|
||||
* O_SYNC to get an uncached region */
|
||||
unsigned cached;
|
||||
/* The MSM7k has bits to enable a write buffer in the bus controller*/
|
||||
unsigned buffered;
|
||||
/* which memory type (i.e. SMI, EBI1) this PMEM device is backed by */
|
||||
unsigned memory_type;
|
||||
/*
|
||||
* function to be called when the number of allocations goes from
|
||||
* 0 -> 1
|
||||
*/
|
||||
void (*request_region)(void *);
|
||||
/*
|
||||
* function to be called when the number of allocations goes from
|
||||
* 1 -> 0
|
||||
*/
|
||||
void (*release_region)(void *);
|
||||
/*
|
||||
* function to be called upon pmem registration
|
||||
*/
|
||||
void *(*setup_region)(void);
|
||||
/*
|
||||
* indicates that this region should be mapped/unmaped as needed
|
||||
*/
|
||||
int map_on_demand;
|
||||
};
|
||||
|
||||
int pmem_setup(struct android_pmem_platform_data *pdata,
|
||||
long (*ioctl)(struct file *, unsigned int, unsigned long),
|
||||
int (*release)(struct inode *, struct file *));
|
||||
|
||||
int pmem_remap(struct pmem_region *region, struct file *file,
|
||||
unsigned operation);
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif //_ANDROID_PPP_H_
|
||||
|
185
include/linux/android_pmem.h
Normal file
185
include/linux/android_pmem.h
Normal file
@ -0,0 +1,185 @@
|
||||
/* include/linux/android_pmem.h
|
||||
*
|
||||
* Copyright (C) 2007 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _ANDROID_PMEM_H_
|
||||
#define _ANDROID_PMEM_H_
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
#define PMEM_KERNEL_TEST_MAGIC 0xc0
|
||||
#define PMEM_KERNEL_TEST_NOMINAL_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 1)
|
||||
#define PMEM_KERNEL_TEST_ADVERSARIAL_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 2)
|
||||
#define PMEM_KERNEL_TEST_HUGE_ALLOCATION_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 3)
|
||||
#define PMEM_KERNEL_TEST_FREE_UNALLOCATED_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 4)
|
||||
#define PMEM_KERNEL_TEST_LARGE_REGION_NUMBER_TEST_IOCTL \
|
||||
_IO(PMEM_KERNEL_TEST_MAGIC, 5)
|
||||
|
||||
#define PMEM_IOCTL_MAGIC 'p'
|
||||
#define PMEM_GET_PHYS _IOW(PMEM_IOCTL_MAGIC, 1, unsigned int)
|
||||
#define PMEM_MAP _IOW(PMEM_IOCTL_MAGIC, 2, unsigned int)
|
||||
#define PMEM_GET_SIZE _IOW(PMEM_IOCTL_MAGIC, 3, unsigned int)
|
||||
#define PMEM_UNMAP _IOW(PMEM_IOCTL_MAGIC, 4, unsigned int)
|
||||
/* This ioctl will allocate pmem space, backing the file, it will fail
|
||||
* if the file already has an allocation, pass it the len as the argument
|
||||
* to the ioctl */
|
||||
#define PMEM_ALLOCATE _IOW(PMEM_IOCTL_MAGIC, 5, unsigned int)
|
||||
/* This will connect a one pmem file to another, pass the file that is already
|
||||
* backed in memory as the argument to the ioctl
|
||||
*/
|
||||
#define PMEM_CONNECT _IOW(PMEM_IOCTL_MAGIC, 6, unsigned int)
|
||||
/* Returns the total size of the pmem region it is sent to as a pmem_region
|
||||
* struct (with offset set to 0).
|
||||
*/
|
||||
#define PMEM_GET_TOTAL_SIZE _IOW(PMEM_IOCTL_MAGIC, 7, unsigned int)
|
||||
/* Revokes gpu registers and resets the gpu. Pass a pointer to the
|
||||
* start of the mapped gpu regs (the vaddr returned by mmap) as the argument.
|
||||
*/
|
||||
#define HW3D_REVOKE_GPU _IOW(PMEM_IOCTL_MAGIC, 8, unsigned int)
|
||||
#define HW3D_GRANT_GPU _IOW(PMEM_IOCTL_MAGIC, 9, unsigned int)
|
||||
#define HW3D_WAIT_FOR_INTERRUPT _IOW(PMEM_IOCTL_MAGIC, 10, unsigned int)
|
||||
|
||||
#define PMEM_CLEAN_INV_CACHES _IOW(PMEM_IOCTL_MAGIC, 11, unsigned int)
|
||||
#define PMEM_CLEAN_CACHES _IOW(PMEM_IOCTL_MAGIC, 12, unsigned int)
|
||||
#define PMEM_INV_CACHES _IOW(PMEM_IOCTL_MAGIC, 13, unsigned int)
|
||||
|
||||
#define PMEM_GET_FREE_SPACE _IOW(PMEM_IOCTL_MAGIC, 14, unsigned int)
|
||||
#define PMEM_ALLOCATE_ALIGNED _IOW(PMEM_IOCTL_MAGIC, 15, unsigned int)
|
||||
struct pmem_region {
|
||||
unsigned long offset;
|
||||
unsigned long len;
|
||||
};
|
||||
|
||||
struct pmem_addr {
|
||||
unsigned long vaddr;
|
||||
unsigned long offset;
|
||||
unsigned long length;
|
||||
};
|
||||
|
||||
struct pmem_freespace {
|
||||
unsigned long total;
|
||||
unsigned long largest;
|
||||
};
|
||||
|
||||
struct pmem_allocation {
|
||||
unsigned long size;
|
||||
unsigned int align;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
int get_pmem_file(unsigned int fd, unsigned long *start, unsigned long *vstart,
|
||||
unsigned long *end, struct file **filp);
|
||||
int get_pmem_fd(int fd, unsigned long *start, unsigned long *end);
|
||||
int get_pmem_user_addr(struct file *file, unsigned long *start,
|
||||
unsigned long *end);
|
||||
void put_pmem_file(struct file* file);
|
||||
void put_pmem_fd(int fd);
|
||||
void flush_pmem_fd(int fd, unsigned long start, unsigned long len);
|
||||
void flush_pmem_file(struct file *file, unsigned long start, unsigned long len);
|
||||
int pmem_cache_maint(struct file *file, unsigned int cmd,
|
||||
struct pmem_addr *pmem_addr);
|
||||
|
||||
enum pmem_allocator_type {
|
||||
/* Zero is a default in platform PMEM structures in the board files,
|
||||
* when the "allocator_type" structure element is not explicitly
|
||||
* defined
|
||||
*/
|
||||
PMEM_ALLOCATORTYPE_BITMAP = 0, /* forced to be zero here */
|
||||
PMEM_ALLOCATORTYPE_SYSTEM,
|
||||
|
||||
PMEM_ALLOCATORTYPE_ALLORNOTHING,
|
||||
PMEM_ALLOCATORTYPE_BUDDYBESTFIT,
|
||||
|
||||
PMEM_ALLOCATORTYPE_MAX,
|
||||
};
|
||||
|
||||
#define PMEM_MEMTYPE_MASK 0x7
|
||||
#define PMEM_INVALID_MEMTYPE 0x0
|
||||
#define PMEM_MEMTYPE_EBI1 0x1
|
||||
#define PMEM_MEMTYPE_SMI 0x2
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID2 0x3
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID3 0x4
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID4 0x5
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID5 0x6
|
||||
#define PMEM_MEMTYPE_RESERVED_INVALID6 0x7
|
||||
|
||||
#define PMEM_ALIGNMENT_MASK 0x18
|
||||
#define PMEM_ALIGNMENT_RESERVED_INVALID1 0x0
|
||||
#define PMEM_ALIGNMENT_4K 0x8 /* the default */
|
||||
#define PMEM_ALIGNMENT_1M 0x10
|
||||
#define PMEM_ALIGNMENT_RESERVED_INVALID2 0x18
|
||||
|
||||
/* flags in the following function defined as above. */
|
||||
int32_t pmem_kalloc(const size_t size, const uint32_t flags);
|
||||
int32_t pmem_kfree(const int32_t physaddr);
|
||||
|
||||
/* kernel api names for board specific data structures */
|
||||
#define PMEM_KERNEL_EBI1_DATA_NAME "pmem_kernel_ebi1"
|
||||
#define PMEM_KERNEL_SMI_DATA_NAME "pmem_kernel_smi"
|
||||
|
||||
struct android_pmem_platform_data
|
||||
{
|
||||
const char* name;
|
||||
/* size of memory region */
|
||||
unsigned long size;
|
||||
|
||||
enum pmem_allocator_type allocator_type;
|
||||
/* treated as a 'hidden' variable in the board files. Can be
|
||||
* set, but default is the system init value of 0 which becomes a
|
||||
* quantum of 4K pages.
|
||||
*/
|
||||
unsigned int quantum;
|
||||
|
||||
/* set to indicate maps of this region should be cached, if a mix of
|
||||
* cached and uncached is desired, set this and open the device with
|
||||
* O_SYNC to get an uncached region */
|
||||
unsigned cached;
|
||||
/* The MSM7k has bits to enable a write buffer in the bus controller*/
|
||||
unsigned buffered;
|
||||
/* which memory type (i.e. SMI, EBI1) this PMEM device is backed by */
|
||||
unsigned memory_type;
|
||||
/*
|
||||
* function to be called when the number of allocations goes from
|
||||
* 0 -> 1
|
||||
*/
|
||||
void (*request_region)(void *);
|
||||
/*
|
||||
* function to be called when the number of allocations goes from
|
||||
* 1 -> 0
|
||||
*/
|
||||
void (*release_region)(void *);
|
||||
/*
|
||||
* function to be called upon pmem registration
|
||||
*/
|
||||
void *(*setup_region)(void);
|
||||
/*
|
||||
* indicates that this region should be mapped/unmaped as needed
|
||||
*/
|
||||
int map_on_demand;
|
||||
};
|
||||
|
||||
int pmem_setup(struct android_pmem_platform_data *pdata,
|
||||
long (*ioctl)(struct file *, unsigned int, unsigned long),
|
||||
int (*release)(struct inode *, struct file *));
|
||||
|
||||
int pmem_remap(struct pmem_region *region, struct file *file,
|
||||
unsigned operation);
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif //_ANDROID_PPP_H_
|
||||
|
55
include/linux/ashmem.h
Normal file
55
include/linux/ashmem.h
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* include/linux/ashmem.h
|
||||
*
|
||||
* Copyright 2008 Google Inc.
|
||||
* Author: Robert Love
|
||||
*
|
||||
* This file is dual licensed. It may be redistributed and/or modified
|
||||
* under the terms of the Apache 2.0 License OR version 2 of the GNU
|
||||
* General Public License.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ASHMEM_H
|
||||
#define _LINUX_ASHMEM_H
|
||||
|
||||
#include <linux/limits.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define ASHMEM_NAME_LEN 256
|
||||
|
||||
#define ASHMEM_NAME_DEF "dev/ashmem"
|
||||
|
||||
/* Return values from ASHMEM_PIN: Was the mapping purged while unpinned? */
|
||||
#define ASHMEM_NOT_PURGED 0
|
||||
#define ASHMEM_WAS_PURGED 1
|
||||
|
||||
/* Return values from ASHMEM_GET_PIN_STATUS: Is the mapping pinned? */
|
||||
#define ASHMEM_IS_UNPINNED 0
|
||||
#define ASHMEM_IS_PINNED 1
|
||||
|
||||
struct ashmem_pin {
|
||||
__u32 offset; /* offset into region, in bytes, page-aligned */
|
||||
__u32 len; /* length forward from offset, in bytes, page-aligned */
|
||||
};
|
||||
|
||||
#define __ASHMEMIOC 0x77
|
||||
|
||||
#define ASHMEM_SET_NAME _IOW(__ASHMEMIOC, 1, char[ASHMEM_NAME_LEN])
|
||||
#define ASHMEM_GET_NAME _IOR(__ASHMEMIOC, 2, char[ASHMEM_NAME_LEN])
|
||||
#define ASHMEM_SET_SIZE _IOW(__ASHMEMIOC, 3, size_t)
|
||||
#define ASHMEM_GET_SIZE _IO(__ASHMEMIOC, 4)
|
||||
#define ASHMEM_SET_PROT_MASK _IOW(__ASHMEMIOC, 5, unsigned long)
|
||||
#define ASHMEM_GET_PROT_MASK _IO(__ASHMEMIOC, 6)
|
||||
#define ASHMEM_PIN _IOW(__ASHMEMIOC, 7, struct ashmem_pin)
|
||||
#define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
|
||||
#define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
|
||||
#define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
|
||||
#define ASHMEM_CACHE_FLUSH_RANGE _IO(__ASHMEMIOC, 11)
|
||||
#define ASHMEM_CACHE_CLEAN_RANGE _IO(__ASHMEMIOC, 12)
|
||||
#define ASHMEM_CACHE_INV_RANGE _IO(__ASHMEMIOC, 13)
|
||||
|
||||
int get_ashmem_file(int fd, struct file **filp, struct file **vm_file,
|
||||
unsigned long *len);
|
||||
void put_ashmem_file(struct file *file);
|
||||
|
||||
#endif /* _LINUX_ASHMEM_H */
|
1174
include/linux/fb.h
Normal file
1174
include/linux/fb.h
Normal file
File diff suppressed because it is too large
Load Diff
45
include/linux/genlock.h
Normal file
45
include/linux/genlock.h
Normal file
@ -0,0 +1,45 @@
|
||||
#ifndef _GENLOCK_H_
|
||||
#define _GENLOCK_H_
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
struct genlock;
|
||||
struct genlock_handle;
|
||||
|
||||
struct genlock_handle *genlock_get_handle(void);
|
||||
struct genlock_handle *genlock_get_handle_fd(int fd);
|
||||
void genlock_put_handle(struct genlock_handle *handle);
|
||||
struct genlock *genlock_create_lock(struct genlock_handle *);
|
||||
struct genlock *genlock_attach_lock(struct genlock_handle *, int fd);
|
||||
int genlock_wait(struct genlock_handle *handle, u32 timeout);
|
||||
void genlock_release_lock(struct genlock_handle *);
|
||||
int genlock_lock(struct genlock_handle *handle, int op, int flags,
|
||||
u32 timeout);
|
||||
#endif
|
||||
|
||||
#define GENLOCK_UNLOCK 0
|
||||
#define GENLOCK_WRLOCK 1
|
||||
#define GENLOCK_RDLOCK 2
|
||||
|
||||
#define GENLOCK_NOBLOCK (1 << 0)
|
||||
|
||||
struct genlock_lock {
|
||||
int fd;
|
||||
int op;
|
||||
int flags;
|
||||
int timeout;
|
||||
};
|
||||
|
||||
#define GENLOCK_IOC_MAGIC 'G'
|
||||
|
||||
#define GENLOCK_IOC_NEW _IO(GENLOCK_IOC_MAGIC, 0)
|
||||
#define GENLOCK_IOC_EXPORT _IOR(GENLOCK_IOC_MAGIC, 1, \
|
||||
struct genlock_lock)
|
||||
#define GENLOCK_IOC_ATTACH _IOW(GENLOCK_IOC_MAGIC, 2, \
|
||||
struct genlock_lock)
|
||||
#define GENLOCK_IOC_LOCK _IOW(GENLOCK_IOC_MAGIC, 3, \
|
||||
struct genlock_lock)
|
||||
#define GENLOCK_IOC_RELEASE _IO(GENLOCK_IOC_MAGIC, 4)
|
||||
#define GENLOCK_IOC_WAIT _IOW(GENLOCK_IOC_MAGIC, 5, \
|
||||
struct genlock_lock)
|
||||
#endif
|
341
include/linux/msm_mdp.h
Normal file
341
include/linux/msm_mdp.h
Normal file
@ -0,0 +1,341 @@
|
||||
/* include/linux/msm_mdp.h
|
||||
*
|
||||
* Copyright (C) 2007 Google Incorporated
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
#ifndef _MSM_MDP_H_
|
||||
#define _MSM_MDP_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/fb.h>
|
||||
|
||||
#define MSMFB_IOCTL_MAGIC 'm'
|
||||
#define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
|
||||
#define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
|
||||
#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int)
|
||||
#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int)
|
||||
#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor)
|
||||
#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap)
|
||||
#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram)
|
||||
/* new ioctls's for set/get ccs matrix */
|
||||
#define MSMFB_GET_CCS_MATRIX _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs)
|
||||
#define MSMFB_SET_CCS_MATRIX _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs)
|
||||
#define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, \
|
||||
struct mdp_overlay)
|
||||
#define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int)
|
||||
#define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, \
|
||||
struct msmfb_overlay_data)
|
||||
#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, \
|
||||
struct mdp_page_protection)
|
||||
#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, \
|
||||
struct mdp_page_protection)
|
||||
#define MSMFB_OVERLAY_GET _IOR(MSMFB_IOCTL_MAGIC, 140, \
|
||||
struct mdp_overlay)
|
||||
#define MSMFB_OVERLAY_PLAY_ENABLE _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int)
|
||||
#define MSMFB_OVERLAY_BLT _IOWR(MSMFB_IOCTL_MAGIC, 142, \
|
||||
struct msmfb_overlay_blt)
|
||||
#define MSMFB_OVERLAY_BLT_OFFSET _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int)
|
||||
#define MSMFB_HISTOGRAM_START _IO(MSMFB_IOCTL_MAGIC, 144)
|
||||
#define MSMFB_HISTOGRAM_STOP _IO(MSMFB_IOCTL_MAGIC, 145)
|
||||
#define MSMFB_NOTIFY_UPDATE _IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int)
|
||||
|
||||
#define MSMFB_OVERLAY_3D _IOWR(MSMFB_IOCTL_MAGIC, 147, \
|
||||
struct msmfb_overlay_3d)
|
||||
|
||||
#define MSMFB_MIXER_INFO _IOWR(MSMFB_IOCTL_MAGIC, 148, \
|
||||
struct msmfb_mixer_info_req)
|
||||
#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, \
|
||||
struct msmfb_overlay_data)
|
||||
|
||||
#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150)
|
||||
#define MSMFB_WRITEBACK_REGISTER_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 151, \
|
||||
struct msmfb_writeback_data)
|
||||
#define MSMFB_WRITEBACK_UNREGISTER_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 152, \
|
||||
struct msmfb_writeback_data)
|
||||
#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, \
|
||||
struct msmfb_data)
|
||||
#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, \
|
||||
struct msmfb_data)
|
||||
#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155)
|
||||
|
||||
#define FB_TYPE_3D_PANEL 0x10101010
|
||||
#define MDP_IMGTYPE2_START 0x10000
|
||||
#define MSMFB_DRIVER_VERSION 0xF9E8D701
|
||||
|
||||
enum {
|
||||
NOTIFY_UPDATE_START,
|
||||
NOTIFY_UPDATE_STOP,
|
||||
};
|
||||
|
||||
enum {
|
||||
MDP_RGB_565, /* RGB 565 planer */
|
||||
MDP_XRGB_8888, /* RGB 888 padded */
|
||||
MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planer w/ Cb is in MSB */
|
||||
MDP_ARGB_8888, /* ARGB 888 */
|
||||
MDP_RGB_888, /* RGB 888 planer */
|
||||
MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planer w/ Cr is in MSB */
|
||||
MDP_YCRYCB_H2V1, /* YCrYCb interleave */
|
||||
MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */
|
||||
MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */
|
||||
MDP_RGBA_8888, /* ARGB 888 */
|
||||
MDP_BGRA_8888, /* ABGR 888 */
|
||||
MDP_RGBX_8888, /* RGBX 888 */
|
||||
MDP_Y_CRCB_H2V2_TILE, /* Y and CrCb, pseudo planer tile */
|
||||
MDP_Y_CBCR_H2V2_TILE, /* Y and CbCr, pseudo planer tile */
|
||||
MDP_Y_CR_CB_H2V2, /* Y, Cr and Cb, planar */
|
||||
MDP_Y_CR_CB_GH2V2, /* Y, Cr and Cb, planar aligned to Android YV12 */
|
||||
MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */
|
||||
MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */
|
||||
MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */
|
||||
MDP_IMGTYPE_LIMIT,
|
||||
MDP_BGR_565 = MDP_IMGTYPE2_START, /* BGR 565 planer */
|
||||
MDP_FB_FORMAT, /* framebuffer format */
|
||||
MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */
|
||||
};
|
||||
|
||||
enum {
|
||||
PMEM_IMG,
|
||||
FB_IMG,
|
||||
};
|
||||
|
||||
enum {
|
||||
HSIC_HUE = 0,
|
||||
HSIC_SAT,
|
||||
HSIC_INT,
|
||||
HSIC_CON,
|
||||
NUM_HSIC_PARAM,
|
||||
};
|
||||
|
||||
/* mdp_blit_req flag values */
|
||||
#define MDP_ROT_NOP 0
|
||||
#define MDP_FLIP_LR 0x1
|
||||
#define MDP_FLIP_UD 0x2
|
||||
#define MDP_ROT_90 0x4
|
||||
#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR)
|
||||
#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
|
||||
#define MDP_DITHER 0x8
|
||||
#define MDP_BLUR 0x10
|
||||
#define MDP_BLEND_FG_PREMULT 0x20000
|
||||
#define MDP_DEINTERLACE 0x80000000
|
||||
#define MDP_SHARPENING 0x40000000
|
||||
#define MDP_NO_DMA_BARRIER_START 0x20000000
|
||||
#define MDP_NO_DMA_BARRIER_END 0x10000000
|
||||
#define MDP_NO_BLIT 0x08000000
|
||||
#define MDP_BLIT_WITH_DMA_BARRIERS 0x000
|
||||
#define MDP_BLIT_WITH_NO_DMA_BARRIERS \
|
||||
(MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END)
|
||||
#define MDP_BLIT_SRC_GEM 0x04000000
|
||||
#define MDP_BLIT_DST_GEM 0x02000000
|
||||
#define MDP_BLIT_NON_CACHED 0x01000000
|
||||
#define MDP_OV_PIPE_SHARE 0x00800000
|
||||
#define MDP_DEINTERLACE_ODD 0x00400000
|
||||
#define MDP_OV_PLAY_NOWAIT 0x00200000
|
||||
#define MDP_SOURCE_ROTATED_90 0x00100000
|
||||
#define MDP_MEMORY_ID_TYPE_FB 0x00001000
|
||||
#define MDP_DPP_HSIC 0x00080000
|
||||
|
||||
#define MDP_TRANSP_NOP 0xffffffff
|
||||
#define MDP_ALPHA_NOP 0xff
|
||||
|
||||
#define MDP_FB_PAGE_PROTECTION_NONCACHED (0)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4)
|
||||
/* Sentinel: Don't use! */
|
||||
#define MDP_FB_PAGE_PROTECTION_INVALID (5)
|
||||
/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */
|
||||
#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5)
|
||||
|
||||
struct mdp_rect {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint32_t w;
|
||||
uint32_t h;
|
||||
};
|
||||
|
||||
struct mdp_img {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t format;
|
||||
uint32_t offset;
|
||||
int memory_id; /* the file descriptor */
|
||||
uint32_t priv;
|
||||
};
|
||||
|
||||
/*
|
||||
* {3x3} + {3} ccs matrix
|
||||
*/
|
||||
|
||||
#define MDP_CCS_RGB2YUV 0
|
||||
#define MDP_CCS_YUV2RGB 1
|
||||
|
||||
#define MDP_CCS_SIZE 9
|
||||
#define MDP_BV_SIZE 3
|
||||
|
||||
struct mdp_ccs {
|
||||
int direction; /* MDP_CCS_RGB2YUV or YUV2RGB */
|
||||
uint16_t ccs[MDP_CCS_SIZE]; /* 3x3 color coefficients */
|
||||
uint16_t bv[MDP_BV_SIZE]; /* 1x3 bias vector */
|
||||
};
|
||||
|
||||
struct mdp_csc {
|
||||
int id;
|
||||
uint32_t csc_mv[9];
|
||||
uint32_t csc_pre_bv[3];
|
||||
uint32_t csc_post_bv[3];
|
||||
uint32_t csc_pre_lv[6];
|
||||
uint32_t csc_post_lv[6];
|
||||
};
|
||||
|
||||
/* The version of the mdp_blit_req structure so that
|
||||
* user applications can selectively decide which functionality
|
||||
* to include
|
||||
*/
|
||||
|
||||
#define MDP_BLIT_REQ_VERSION 2
|
||||
|
||||
struct mdp_blit_req {
|
||||
struct mdp_img src;
|
||||
struct mdp_img dst;
|
||||
struct mdp_rect src_rect;
|
||||
struct mdp_rect dst_rect;
|
||||
uint32_t alpha;
|
||||
uint32_t transp_mask;
|
||||
uint32_t flags;
|
||||
int sharpening_strength; /* -127 <--> 127, default 64 */
|
||||
};
|
||||
|
||||
struct mdp_blit_req_list {
|
||||
uint32_t count;
|
||||
struct mdp_blit_req req[];
|
||||
};
|
||||
|
||||
#define MSMFB_DATA_VERSION 2
|
||||
|
||||
struct msmfb_data {
|
||||
uint32_t offset;
|
||||
int memory_id;
|
||||
int id;
|
||||
uint32_t flags;
|
||||
uint32_t priv;
|
||||
};
|
||||
|
||||
#define MSMFB_NEW_REQUEST -1
|
||||
|
||||
struct msmfb_overlay_data {
|
||||
uint32_t id;
|
||||
struct msmfb_data data;
|
||||
uint32_t version_key;
|
||||
struct msmfb_data plane1_data;
|
||||
struct msmfb_data plane2_data;
|
||||
};
|
||||
|
||||
struct msmfb_img {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t format;
|
||||
};
|
||||
|
||||
#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1
|
||||
struct msmfb_writeback_data {
|
||||
struct msmfb_data buf_info;
|
||||
struct msmfb_img img;
|
||||
};
|
||||
|
||||
struct dpp_ctrl {
|
||||
/*
|
||||
*'sharp_strength' has inputs = -128 <-> 127
|
||||
* Increasingly positive values correlate with increasingly sharper
|
||||
* picture. Increasingly negative values correlate with increasingly
|
||||
* smoothed picture.
|
||||
*/
|
||||
int8_t sharp_strength;
|
||||
int8_t hsic_params[NUM_HSIC_PARAM];
|
||||
};
|
||||
|
||||
struct mdp_overlay {
|
||||
struct msmfb_img src;
|
||||
struct mdp_rect src_rect;
|
||||
struct mdp_rect dst_rect;
|
||||
uint32_t z_order; /* stage number */
|
||||
uint32_t is_fg; /* control alpha & transp */
|
||||
uint32_t alpha;
|
||||
uint32_t transp_mask;
|
||||
uint32_t flags;
|
||||
uint32_t id;
|
||||
uint32_t user_data[8];
|
||||
struct dpp_ctrl dpp;
|
||||
};
|
||||
|
||||
struct msmfb_overlay_3d {
|
||||
uint32_t is_3d;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
};
|
||||
|
||||
|
||||
struct msmfb_overlay_blt {
|
||||
uint32_t enable;
|
||||
uint32_t offset;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t bpp;
|
||||
};
|
||||
|
||||
struct mdp_histogram {
|
||||
uint32_t frame_cnt;
|
||||
uint32_t bin_cnt;
|
||||
uint32_t *r;
|
||||
uint32_t *g;
|
||||
uint32_t *b;
|
||||
};
|
||||
|
||||
struct mdp_page_protection {
|
||||
uint32_t page_protection;
|
||||
};
|
||||
|
||||
|
||||
struct mdp_mixer_info {
|
||||
int pndx;
|
||||
int pnum;
|
||||
int ptype;
|
||||
int mixer_num;
|
||||
int z_order;
|
||||
};
|
||||
|
||||
#define MAX_PIPE_PER_MIXER 4
|
||||
|
||||
struct msmfb_mixer_info_req {
|
||||
int mixer_num;
|
||||
int cnt;
|
||||
struct mdp_mixer_info info[MAX_PIPE_PER_MIXER];
|
||||
};
|
||||
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* get the framebuffer physical address information */
|
||||
int get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num);
|
||||
struct fb_info *msm_fb_get_writeback_fb(void);
|
||||
int msm_fb_writeback_init(struct fb_info *info);
|
||||
int msm_fb_writeback_register_buffer(struct fb_info *info,
|
||||
struct msmfb_writeback_data *data);
|
||||
int msm_fb_writeback_queue_buffer(struct fb_info *info,
|
||||
struct msmfb_data *data);
|
||||
int msm_fb_writeback_dequeue_buffer(struct fb_info *info,
|
||||
struct msmfb_data *data);
|
||||
int msm_fb_writeback_unregister_buffer(struct fb_info *info,
|
||||
struct msmfb_writeback_data *data);
|
||||
int msm_fb_writeback_terminate(struct fb_info *info);
|
||||
#endif
|
||||
|
||||
#endif /*_MSM_MDP_H_*/
|
57
include/linux/msm_rotator.h
Normal file
57
include/linux/msm_rotator.h
Normal file
@ -0,0 +1,57 @@
|
||||
#ifndef __MSM_ROTATOR_H__
|
||||
#define __MSM_ROTATOR_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/msm_mdp.h>
|
||||
|
||||
#define MSM_ROTATOR_IOCTL_MAGIC 'R'
|
||||
|
||||
#define MSM_ROTATOR_IOCTL_START \
|
||||
_IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info)
|
||||
#define MSM_ROTATOR_IOCTL_ROTATE \
|
||||
_IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info)
|
||||
#define MSM_ROTATOR_IOCTL_FINISH \
|
||||
_IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int)
|
||||
|
||||
#define ROTATOR_VERSION_01 0xA5B4C301
|
||||
|
||||
enum rotator_clk_type {
|
||||
ROTATOR_CORE_CLK,
|
||||
ROTATOR_PCLK,
|
||||
ROTATOR_IMEM_CLK
|
||||
};
|
||||
|
||||
struct msm_rotator_img_info {
|
||||
unsigned int session_id;
|
||||
struct msmfb_img src;
|
||||
struct msmfb_img dst;
|
||||
struct mdp_rect src_rect;
|
||||
unsigned int dst_x;
|
||||
unsigned int dst_y;
|
||||
unsigned char rotations;
|
||||
int enable;
|
||||
};
|
||||
|
||||
struct msm_rotator_data_info {
|
||||
int session_id;
|
||||
struct msmfb_data src;
|
||||
struct msmfb_data dst;
|
||||
unsigned int version_key;
|
||||
struct msmfb_data src_chroma;
|
||||
struct msmfb_data dst_chroma;
|
||||
};
|
||||
|
||||
struct msm_rot_clocks {
|
||||
const char *clk_name;
|
||||
enum rotator_clk_type clk_type;
|
||||
unsigned int clk_rate;
|
||||
};
|
||||
|
||||
struct msm_rotator_platform_data {
|
||||
unsigned int number_of_clocks;
|
||||
unsigned int hardware_version_number;
|
||||
struct msm_rot_clocks *rotator_clks;
|
||||
const char *regulator_name;
|
||||
};
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user