summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libc/kernel/common/linux/msm_mdp.h2
-rw-r--r--libc/kernel/common/linux/msm_q6venc.h113
-rw-r--r--linker/Android.mk6
-rw-r--r--linker/linker.h5
4 files changed, 73 insertions, 53 deletions
diff --git a/libc/kernel/common/linux/msm_mdp.h b/libc/kernel/common/linux/msm_mdp.h
index 5dd455b..820e8d0 100644
--- a/libc/kernel/common/linux/msm_mdp.h
+++ b/libc/kernel/common/linux/msm_mdp.h
@@ -52,6 +52,8 @@ enum {
MDP_RGBA_8888,
MDP_BGRA_8888,
MDP_RGBX_8888,
+ MDP_Y_CRCB_H2V2_TILE,
+ MDP_Y_CBCR_H2V2_TILE,
MDP_IMGTYPE_LIMIT,
MDP_BGR_565 = MDP_IMGTYPE2_START,
MDP_FB_FORMAT,
diff --git a/libc/kernel/common/linux/msm_q6venc.h b/libc/kernel/common/linux/msm_q6venc.h
index dbe118a..433c265 100644
--- a/libc/kernel/common/linux/msm_q6venc.h
+++ b/libc/kernel/common/linux/msm_q6venc.h
@@ -99,52 +99,52 @@ enum venc_mem_region_enum {
};
struct venc_buf_type {
- unsigned int region;
- unsigned int phys;
- unsigned int size;
+ u32 region;
+ u32 phys;
+ u32 size;
int offset;
};
struct venc_qp_range {
- unsigned int min_qp;
- unsigned int max_qp;
+ u32 min_qp;
+ u32 max_qp;
};
struct venc_frame_rate {
- unsigned int frame_rate_num;
- unsigned int frame_rate_den;
+ u32 frame_rate_num;
+ u32 frame_rate_den;
};
struct venc_slice_info {
- unsigned int slice_mode;
- unsigned int units_per_slice;
+ u32 slice_mode;
+ u32 units_per_slice;
};
struct venc_extra_data {
- unsigned int slice_extra_data_flag;
- unsigned int slice_client_data1;
- unsigned int slice_client_data2;
- unsigned int slice_client_data3;
- unsigned int none_extra_data_flag;
- unsigned int none_client_data1;
- unsigned int none_client_data2;
- unsigned int none_client_data3;
+ u32 slice_extra_data_flag;
+ u32 slice_client_data1;
+ u32 slice_client_data2;
+ u32 slice_client_data3;
+ u32 none_extra_data_flag;
+ u32 none_client_data1;
+ u32 none_client_data2;
+ u32 none_client_data3;
};
struct venc_common_config {
- unsigned int standard;
- unsigned int input_frame_height;
- unsigned int input_frame_width;
- unsigned int output_frame_height;
- unsigned int output_frame_width;
- unsigned int rotation_angle;
- unsigned int intra_period;
- unsigned int rate_control;
+ u32 standard;
+ u32 input_frame_height;
+ u32 input_frame_width;
+ u32 output_frame_height;
+ u32 output_frame_width;
+ u32 rotation_angle;
+ u32 intra_period;
+ u32 rate_control;
struct venc_frame_rate frame_rate;
- unsigned int bitrate;
+ u32 bitrate;
struct venc_qp_range qp_range;
- unsigned int iframe_qp;
- unsigned int pframe_qp;
+ u32 iframe_qp;
+ u32 pframe_qp;
struct venc_slice_info slice_config;
struct venc_extra_data extra_data;
};
@@ -158,45 +158,45 @@ struct venc_nonio_buf_config {
};
struct venc_mpeg4_config {
- unsigned int profile;
- unsigned int level;
- unsigned int time_resolution;
- unsigned int ac_prediction;
- unsigned int hec_interval;
- unsigned int data_partition;
- unsigned int short_header;
- unsigned int rvlc_enable;
+ u32 profile;
+ u32 level;
+ u32 time_resolution;
+ u32 ac_prediction;
+ u32 hec_interval;
+ u32 data_partition;
+ u32 short_header;
+ u32 rvlc_enable;
};
struct venc_h263_config {
- unsigned int profile;
- unsigned int level;
+ u32 profile;
+ u32 level;
};
struct venc_h264_config {
- unsigned int profile;
- unsigned int level;
- unsigned int max_nal;
- unsigned int idr_period;
+ u32 profile;
+ u32 level;
+ u32 max_nal;
+ u32 idr_period;
};
struct venc_pmem {
int src;
int fd;
- unsigned int offset;
+ u32 offset;
void *virt;
void *phys;
- unsigned int size;
+ u32 size;
};
struct venc_buffer {
unsigned char *ptr_buffer;
- unsigned int size;
- unsigned int len;
- unsigned int offset;
+ u32 size;
+ u32 len;
+ u32 offset;
long long time_stamp;
- unsigned int flags;
- unsigned int client_data;
+ u32 flags;
+ u32 client_data;
};
@@ -208,7 +208,7 @@ struct venc_buffers {
};
struct venc_buffer_flush {
- unsigned int flush_mode;
+ u32 flush_mode;
};
union venc_msg_data {
@@ -218,10 +218,10 @@ union venc_msg_data {
};
struct venc_msg {
- unsigned int status_code;
- unsigned int msg_code;
+ u32 status_code;
+ u32 msg_code;
union venc_msg_data msg_data;
- unsigned int msg_data_size;
+ u32 msg_data_size;
};
union venc_codec_config {
@@ -253,6 +253,11 @@ struct venc_seq_config {
struct venc_q6_config q6_config;
};
+struct venc_version {
+ u32 major;
+ u32 minor;
+};
+
#define VENC_IOCTL_MAGIC 'V'
#define VENC_IOCTL_CMD_READ_NEXT_MSG _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
@@ -291,4 +296,6 @@ struct venc_seq_config {
#define VENC_IOCTL_SET_QP_RANGE _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
+#define VENC_IOCTL_GET_VERSION _IOR(VENC_IOCTL_MAGIC, 19, struct venc_version)
+
#endif
diff --git a/linker/Android.mk b/linker/Android.mk
index 00b5b0a..bf6b121 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -9,7 +9,13 @@ LOCAL_SRC_FILES:= \
debugger.c \
ba.c
+ifneq ($(TARGET_USES_2G_VM_SPLIT),true)
+LINKER_TEXT_BASE := 0xB0000100
+else
LINKER_TEXT_BASE := 0x70000100
+LOCAL_CFLAGS += -DVM_SPLIT_2G
+endif
+
# The maximum size set aside for the linker, from
# LINKER_TEXT_BASE rounded down to a megabyte.
diff --git a/linker/linker.h b/linker/linker.h
index d334ece..b831941 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -147,8 +147,13 @@ struct soinfo
extern soinfo libdl_info;
/* these must all be powers of two */
+#ifdef VM_SPLIT_2G
#define LIBBASE 0x40000000
#define LIBLAST 0x50000000
+#else
+#define LIBBASE 0x80000000
+#define LIBLAST 0x90000000
+#endif
#define LIBINC 0x00100000