merge from bravo base (not yet ready)
This commit is contained in:
@@ -20,9 +20,6 @@ subdir_makefiles := \
|
||||
$(LOCAL_PATH)/liblights/Android.mk \
|
||||
$(LOCAL_PATH)/libgps/Android.mk
|
||||
|
||||
# $(LOCAL_PATH)/libreference-ril/Android.mk \
|
||||
# $(LOCAL_PATH)/libhtc_ril_wrapper/Android.mk \
|
||||
|
||||
include $(subdir_makefiles)
|
||||
|
||||
endif
|
||||
|
||||
+49
-21
@@ -23,11 +23,12 @@
|
||||
# WARNING: This line must come *before* including the proprietary
|
||||
# variant, so that it gets overwritten by the parent (which goes
|
||||
# against the traditional rules of inheritance).
|
||||
USE_CAMERA_STUB := false
|
||||
USE_CAMERA_STUB := true
|
||||
|
||||
# inherit from the proprietary version
|
||||
-include vendor/htc/leo/BoardConfigVendor.mk
|
||||
|
||||
TARGET_BOOTLOADER_BOARD_NAME := htcleo
|
||||
TARGET_NO_BOOTLOADER := true
|
||||
|
||||
TARGET_BOARD_PLATFORM := qsd8k
|
||||
@@ -36,13 +37,18 @@ TARGET_BOARD_PLATFORM_GPU := qcom-adreno200
|
||||
TARGET_CPU_ABI := armeabi-v7a
|
||||
TARGET_CPU_ABI2 := armeabi
|
||||
TARGET_ARCH_VARIANT := armv7-a-neon
|
||||
TARGET_ARCH_VARIANT_CPU := cortex-a8
|
||||
TARGET_ARCH_VARIANT_FPU := neon
|
||||
ARCH_ARM_HAVE_TLS_REGISTER := true
|
||||
TARGET_BOOTLOADER_BOARD_NAME := htcleo
|
||||
ARCH_ARM_HAVE_VFP := true
|
||||
|
||||
# FPU compilation flags
|
||||
TARGET_GLOBAL_CFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
|
||||
TARGET_GLOBAL_CPPFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
|
||||
|
||||
# Call headers from msm-3.0: needed to build libs in hardware/qcom/display
|
||||
TARGET_SPECIFIC_HEADER_PATH := device/htc/leo/include
|
||||
|
||||
# Wifi related defines
|
||||
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
|
||||
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_wext
|
||||
@@ -51,12 +57,14 @@ BOARD_WLAN_DEVICE := bcm4329
|
||||
WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/bcm4329.ko"
|
||||
WIFI_DRIVER_FW_PATH_STA := "/vendor/firmware/fw_bcm4329.bin"
|
||||
WIFI_DRIVER_FW_PATH_AP := "/vendor/firmware/fw_bcm4329_apsta.bin"
|
||||
WIFI_DRIVER_MODULE_ARG := "firmware_path=/vendor/firmware/fw_bcm4329.bin nvram_path=/proc/calibration"
|
||||
WIFI_DRIVER_MODULE_ARG := "iface_name=wlan firmware_path=/vendor/firmware/fw_bcm4329.bin nvram_path=/proc/calibration"
|
||||
WIFI_DRIVER_MODULE_NAME := "bcm4329"
|
||||
|
||||
BOARD_KERNEL_CMDLINE := no_console_suspend=1 wire.search_count=5
|
||||
|
||||
BOARD_USES_GENERIC_AUDIO := false
|
||||
COMMON_GLOBAL_CFLAGS += -DUSES_AUDIO_LEGACY
|
||||
|
||||
BOARD_KERNEL_BASE := 0x11800000
|
||||
BOARD_KERNEL_NEW_PPPOX := true
|
||||
|
||||
@@ -67,18 +75,36 @@ BOARD_VENDOR_QCOM_AMSS_VERSION := 3200
|
||||
|
||||
BOARD_VENDOR_USE_AKMD := akm8973
|
||||
|
||||
#BOARD_USE_FROYO_LIBCAMERA := true
|
||||
|
||||
TARGET_USES_16BPPSURFACE_FOR_OPAQUE := true
|
||||
BOARD_USES_QCOM_LIBS := true
|
||||
BOARD_USES_QCOM_HARDWARE := true
|
||||
|
||||
BOARD_USE_KINETO_COMPATIBILITY := true
|
||||
|
||||
BOARD_HAVE_FM_RADIO := true
|
||||
BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO
|
||||
|
||||
TARGET_CUSTOM_RELEASETOOL := device/htc/leo/releasetools/squisher
|
||||
# RIL
|
||||
BOARD_USE_NEW_LIBRIL_HTC := true
|
||||
|
||||
# Hardware rendering
|
||||
BOARD_EGL_CFG := device/htc/leo/prebuilt/egl.cfg
|
||||
USE_OPENGL_RENDERER := true
|
||||
TARGET_USES_GENLOCK := true
|
||||
TARGET_USES_16BPPSURFACE_FOR_OPAQUE := true
|
||||
# We only have 2 buffers so still need to hack it.
|
||||
COMMON_GLOBAL_CFLAGS += -DMISSING_GRALLOC_BUFFERS
|
||||
# Just a safety measure to make sure its all included
|
||||
COMMON_GLOBAL_CFLAGS += -DQCOM_HARDWARE
|
||||
# Force refresh rate since fps calc is broke and reports 0
|
||||
COMMON_GLOBAL_CFLAGS += -DREFRESH_RATE=60
|
||||
# qsd8k: no support for overlay, bypass, or c2d
|
||||
TARGET_USE_OVERLAY := false
|
||||
TARGET_HAVE_BYPASS := false
|
||||
TARGET_USES_C2D_COMPOSITION := false
|
||||
# Allow fallback to ashmem
|
||||
TARGET_GRALLOC_USES_ASHMEM := true
|
||||
# Debuging egl
|
||||
COMMON_GLOBAL_CFLAGS += -DEGL_TRACE
|
||||
|
||||
BOARD_USES_QCOM_LIBS := true
|
||||
BOARD_USES_QCOM_HARDWARE := true
|
||||
|
||||
#TARGET_CUSTOM_RELEASETOOL := device/htc/leo/releasetools/squisher
|
||||
|
||||
# # cat /proc/mtd
|
||||
# dev: size erasesize name
|
||||
@@ -106,14 +132,16 @@ BOARD_VENDOR_QCOM_GPS_LOC_API_AMSS_VERSION := 3200
|
||||
|
||||
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
|
||||
BOARD_NO_RGBX_8888 := true
|
||||
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
|
||||
# Misc
|
||||
BOARD_USE_OPENSSL_ENGINE := true
|
||||
|
||||
# Hacks
|
||||
TARGET_USE_CUSTOM_LUN_FILE_PATH := /sys/devices/platform/usb_mass_storage/lun0/file
|
||||
BOARD_USE_LEGACY_TRACKPAD := true
|
||||
TARGET_FORCE_CPU_UPLOAD := true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
## Specify phone tech before including full_phone
|
||||
$(call inherit-product, vendor/cm/config/gsm.mk)
|
||||
# Inherit AOSP device configuration for leo.
|
||||
$(call inherit-product, device/htc/leo/full_leo.mk)
|
||||
|
||||
# Release name
|
||||
PRODUCT_RELEASE_NAME := GN
|
||||
|
||||
# Inherit some common CM stuff.
|
||||
# Inherit some common cyanogenmod stuff.
|
||||
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
|
||||
|
||||
# Inherit device configuration
|
||||
$(call inherit-product, device/htc/leo/full_leo.mk)
|
||||
# Include GSM stuff
|
||||
$(call inherit-product, vendor/cm/config/gsm.mk)
|
||||
|
||||
|
||||
## Device identifier. This must come after all inclusions
|
||||
PRODUCT_MODEL := HTC HD2
|
||||
@@ -16,13 +14,8 @@ PRODUCT_MANUFACTURER := HTC
|
||||
PRODUCT_BRAND := htc
|
||||
PRODUCT_DEVICE := leo
|
||||
PRODUCT_NAME := cm_leo
|
||||
PRODUCT_CODENAME := leo
|
||||
|
||||
#Set build fingerprint / ID / Prduct Name ect.
|
||||
# Set build fingerprint / ID / Prduct Name ect.
|
||||
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=leo BUILD_ID=IML74K BUILD_DISPLAY_ID=IML74K BUILD_FINGERPRINT="google/htc_leo/leo:4.0.3/IML74K/239410:user/release-keys" PRVIATE_BUILD_DESC="full_leo-user 4.0.3 IML74K 239410 release-keys"
|
||||
|
||||
# Release name and versioning
|
||||
PRODUCT_RELEASE_NAME := LEO
|
||||
#PRODUCT_VERSION_DEVICE_SPECIFIC := -aali
|
||||
|
||||
-include vendor/cm/products/common_versions.mk
|
||||
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
# Inherit from those products. Most specific first.
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
|
||||
$(call inherit-product, device/htc/leo/leo_eu.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/full.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
|
||||
|
||||
# Leo uses high-density artwork where available
|
||||
PRODUCT_LOCALES += hdpi
|
||||
|
||||
@@ -1,175 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef ANDROID_FB_INTERFACE_H
|
||||
#define ANDROID_FB_INTERFACE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <cutils/native_handle.h>
|
||||
|
||||
#include <hardware/hardware.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#define GRALLOC_HARDWARE_FB0 "fb0"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef struct framebuffer_device_t {
|
||||
struct hw_device_t common;
|
||||
|
||||
/* flags describing some attributes of the framebuffer */
|
||||
const uint32_t flags;
|
||||
|
||||
/* dimensions of the framebuffer in pixels */
|
||||
const uint32_t width;
|
||||
const uint32_t height;
|
||||
|
||||
/* frambuffer stride in pixels */
|
||||
const int stride;
|
||||
|
||||
/* framebuffer pixel format */
|
||||
const int format;
|
||||
|
||||
/* resolution of the framebuffer's display panel in pixel per inch*/
|
||||
const float xdpi;
|
||||
const float ydpi;
|
||||
|
||||
/* framebuffer's display panel refresh rate in frames per second */
|
||||
const float fps;
|
||||
|
||||
/* min swap interval supported by this framebuffer */
|
||||
const int minSwapInterval;
|
||||
|
||||
/* max swap interval supported by this framebuffer */
|
||||
const int maxSwapInterval;
|
||||
|
||||
/* number of framebuffers */
|
||||
const int numFramebuffers;
|
||||
|
||||
int reserved[7];
|
||||
|
||||
/*
|
||||
* requests a specific swap-interval (same definition than EGL)
|
||||
*
|
||||
* Returns 0 on success or -errno on error.
|
||||
*/
|
||||
int (*setSwapInterval)(struct framebuffer_device_t* window,
|
||||
int interval);
|
||||
|
||||
/*
|
||||
* This hook is OPTIONAL.
|
||||
*
|
||||
* It is non NULL If the framebuffer driver supports "update-on-demand"
|
||||
* and the given rectangle is the area of the screen that gets
|
||||
* updated during (*post)().
|
||||
*
|
||||
* This is useful on devices that are able to DMA only a portion of
|
||||
* the screen to the display panel, upon demand -- as opposed to
|
||||
* constantly refreshing the panel 60 times per second, for instance.
|
||||
*
|
||||
* Only the area defined by this rectangle is guaranteed to be valid, that
|
||||
* is, the driver is not allowed to post anything outside of this
|
||||
* rectangle.
|
||||
*
|
||||
* The rectangle evaluated during (*post)() and specifies which area
|
||||
* of the buffer passed in (*post)() shall to be posted.
|
||||
*
|
||||
* return -EINVAL if width or height <=0, or if left or top < 0
|
||||
*/
|
||||
int (*setUpdateRect)(struct framebuffer_device_t* window,
|
||||
int left, int top, int width, int height);
|
||||
|
||||
/*
|
||||
* Post <buffer> to the display (display it on the screen)
|
||||
* The buffer must have been allocated with the
|
||||
* GRALLOC_USAGE_HW_FB usage flag.
|
||||
* buffer must be the same width and height as the display and must NOT
|
||||
* be locked.
|
||||
*
|
||||
* The buffer is shown during the next VSYNC.
|
||||
*
|
||||
* If the same buffer is posted again (possibly after some other buffer),
|
||||
* post() will block until the the first post is completed.
|
||||
*
|
||||
* Internally, post() is expected to lock the buffer so that a
|
||||
* subsequent call to gralloc_module_t::(*lock)() with USAGE_RENDER or
|
||||
* USAGE_*_WRITE will block until it is safe; that is typically once this
|
||||
* buffer is shown and another buffer has been posted.
|
||||
*
|
||||
* Returns 0 on success or -errno on error.
|
||||
*/
|
||||
int (*post)(struct framebuffer_device_t* dev, buffer_handle_t buffer);
|
||||
|
||||
|
||||
/*
|
||||
* The (*compositionComplete)() method must be called after the
|
||||
* compositor has finished issuing GL commands for client buffers.
|
||||
*/
|
||||
|
||||
int (*compositionComplete)(struct framebuffer_device_t* dev);
|
||||
|
||||
int (*lockBuffer) (struct framebuffer_device_t* dev, int);
|
||||
|
||||
/*
|
||||
* This hook is OPTIONAL.
|
||||
*
|
||||
* If non NULL it will be caused by SurfaceFlinger on dumpsys
|
||||
*/
|
||||
void (*dump)(struct framebuffer_device_t* dev, char *buff, int buff_len);
|
||||
|
||||
/*
|
||||
* (*enableScreen)() is used to either blank (enable=0) or
|
||||
* unblank (enable=1) the screen this framebuffer is attached to.
|
||||
*
|
||||
* Returns 0 on success or -errno on error.
|
||||
*/
|
||||
int (*enableScreen)(struct framebuffer_device_t* dev, int enable);
|
||||
|
||||
int (*orientationChanged) (struct framebuffer_device_t* dev, int);
|
||||
int (*videoOverlayStarted) (struct framebuffer_device_t* dev, int);
|
||||
int (*enableHDMIOutput) (struct framebuffer_device_t* dev, int);
|
||||
int (*setActionSafeWidthRatio) (struct framebuffer_device_t* dev, float);
|
||||
int (*setActionSafeHeightRatio) (struct framebuffer_device_t* dev, float);
|
||||
int (*resetBufferPostStatus)(struct framebuffer_device_t* dev);
|
||||
int (*waitForBufferPost) (struct framebuffer_device_t* dev);
|
||||
|
||||
} framebuffer_device_t;
|
||||
|
||||
|
||||
/** convenience API for opening and closing a supported device */
|
||||
|
||||
static inline int framebuffer_open(const struct hw_module_t* module,
|
||||
struct framebuffer_device_t** device) {
|
||||
return module->methods->open(module,
|
||||
GRALLOC_HARDWARE_FB0, (struct hw_device_t**)device);
|
||||
}
|
||||
|
||||
static inline int framebuffer_close(struct framebuffer_device_t* device) {
|
||||
return device->common.close(&device->common);
|
||||
}
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif // ANDROID_FB_INTERFACE_H
|
||||
@@ -1,369 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H
|
||||
#define ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#include <hardware/gralloc.h>
|
||||
#include <hardware/hardware.h>
|
||||
#include <cutils/native_handle.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define HWC_API_VERSION 1
|
||||
|
||||
/**
|
||||
* The id of this module
|
||||
*/
|
||||
#define HWC_HARDWARE_MODULE_ID "hwcomposer"
|
||||
|
||||
/**
|
||||
* Name of the sensors device to open
|
||||
*/
|
||||
#define HWC_HARDWARE_COMPOSER "composer"
|
||||
|
||||
|
||||
enum {
|
||||
/* hwc_composer_device_t::set failed in EGL */
|
||||
HWC_EGL_ERROR = -1
|
||||
};
|
||||
|
||||
/*
|
||||
* hwc_layer_t::hints values
|
||||
* Hints are set by the HAL and read by SurfaceFlinger
|
||||
*/
|
||||
enum {
|
||||
/*
|
||||
* HWC can set the HWC_HINT_TRIPLE_BUFFER hint to indicate to SurfaceFlinger
|
||||
* that it should triple buffer this layer. Typically HWC does this when
|
||||
* the layer will be unavailable for use for an extended period of time,
|
||||
* e.g. if the display will be fetching data directly from the layer and
|
||||
* the layer can not be modified until after the next set().
|
||||
*/
|
||||
HWC_HINT_TRIPLE_BUFFER = 0x00000001,
|
||||
|
||||
/*
|
||||
* HWC sets HWC_HINT_CLEAR_FB to tell SurfaceFlinger that it should clear the
|
||||
* framebuffer with transparent pixels where this layer would be.
|
||||
* SurfaceFlinger will only honor this flag when the layer has no blending
|
||||
*
|
||||
*/
|
||||
HWC_HINT_CLEAR_FB = 0x00000002
|
||||
};
|
||||
|
||||
/*
|
||||
* hwc_layer_t::flags values
|
||||
* Flags are set by SurfaceFlinger and read by the HAL
|
||||
*/
|
||||
enum {
|
||||
/*
|
||||
* HWC_SKIP_LAYER is set by SurfaceFlnger to indicate that the HAL
|
||||
* shall not consider this layer for composition as it will be handled
|
||||
* by SurfaceFlinger (just as if compositionType was set to HWC_OVERLAY).
|
||||
*/
|
||||
HWC_SKIP_LAYER = 0x00000001,
|
||||
};
|
||||
|
||||
/*
|
||||
* hwc_layer_t::compositionType values
|
||||
*/
|
||||
enum {
|
||||
/* this layer is to be drawn into the framebuffer by SurfaceFlinger */
|
||||
HWC_FRAMEBUFFER = 0,
|
||||
|
||||
/* this layer will be handled in the HWC */
|
||||
HWC_OVERLAY = 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* hwc_layer_t::blending values
|
||||
*/
|
||||
enum {
|
||||
/* no blending */
|
||||
HWC_BLENDING_NONE = 0x0100,
|
||||
|
||||
/* ONE / ONE_MINUS_SRC_ALPHA */
|
||||
HWC_BLENDING_PREMULT = 0x0105,
|
||||
|
||||
/* SRC_ALPHA / ONE_MINUS_SRC_ALPHA */
|
||||
HWC_BLENDING_COVERAGE = 0x0405
|
||||
};
|
||||
|
||||
/*
|
||||
* hwc_layer_t::transform values
|
||||
*/
|
||||
enum {
|
||||
/* flip source image horizontally */
|
||||
HWC_TRANSFORM_FLIP_H = HAL_TRANSFORM_FLIP_H,
|
||||
/* flip source image vertically */
|
||||
HWC_TRANSFORM_FLIP_V = HAL_TRANSFORM_FLIP_V,
|
||||
/* rotate source image 90 degrees clock-wise */
|
||||
HWC_TRANSFORM_ROT_90 = HAL_TRANSFORM_ROT_90,
|
||||
/* rotate source image 180 degrees */
|
||||
HWC_TRANSFORM_ROT_180 = HAL_TRANSFORM_ROT_180,
|
||||
/* rotate source image 270 degrees clock-wise */
|
||||
HWC_TRANSFORM_ROT_270 = HAL_TRANSFORM_ROT_270,
|
||||
};
|
||||
|
||||
typedef struct hwc_rect {
|
||||
int left;
|
||||
int top;
|
||||
int right;
|
||||
int bottom;
|
||||
} hwc_rect_t;
|
||||
|
||||
typedef struct hwc_region {
|
||||
size_t numRects;
|
||||
hwc_rect_t const* rects;
|
||||
} hwc_region_t;
|
||||
|
||||
typedef struct hwc_layer {
|
||||
/*
|
||||
* initially set to HWC_FRAMEBUFFER, indicates the layer will
|
||||
* be drawn into the framebuffer using OpenGL ES.
|
||||
* The HWC can toggle this value to HWC_OVERLAY, to indicate
|
||||
* it will handle the layer.
|
||||
*/
|
||||
int32_t compositionType;
|
||||
|
||||
/* see hwc_layer_t::hints above */
|
||||
uint32_t hints;
|
||||
|
||||
/* see hwc_layer_t::flags above */
|
||||
uint32_t flags;
|
||||
|
||||
/* handle of buffer to compose. this handle is guaranteed to have been
|
||||
* allocated with gralloc */
|
||||
buffer_handle_t handle;
|
||||
|
||||
/* transformation to apply to the buffer during composition */
|
||||
uint32_t transform;
|
||||
|
||||
/* blending to apply during composition */
|
||||
int32_t blending;
|
||||
|
||||
/* alpha value of the layer */
|
||||
int32_t alpha;
|
||||
|
||||
/* area of the source to consider, the origin is the top-left corner of
|
||||
* the buffer */
|
||||
hwc_rect_t sourceCrop;
|
||||
|
||||
/* where to composite the sourceCrop onto the display. The sourceCrop
|
||||
* is scaled using linear filtering to the displayFrame. The origin is the
|
||||
* top-left corner of the screen.
|
||||
*/
|
||||
hwc_rect_t displayFrame;
|
||||
|
||||
/* visible region in screen space. The origin is the
|
||||
* top-left corner of the screen.
|
||||
* The visible region INCLUDES areas overlapped by a translucent layer.
|
||||
*/
|
||||
hwc_region_t visibleRegionScreen;
|
||||
} hwc_layer_t;
|
||||
|
||||
|
||||
/*
|
||||
* hwc_layer_list_t::flags values
|
||||
*/
|
||||
enum {
|
||||
/*
|
||||
* HWC_GEOMETRY_CHANGED is set by SurfaceFlinger to indicate that the list
|
||||
* passed to (*prepare)() has changed by more than just the buffer handles.
|
||||
*/
|
||||
HWC_GEOMETRY_CHANGED = 0x00000001,
|
||||
|
||||
/*
|
||||
* HWC_SKIP_COMPOSITION is set by the HWC to indicate to SurfaceFlinger to
|
||||
* skip composition for this iteration.
|
||||
*/
|
||||
HWC_SKIP_COMPOSITION = 0x00000002
|
||||
};
|
||||
|
||||
/*
|
||||
* List of layers.
|
||||
* The handle members of hwLayers elements must be unique.
|
||||
*/
|
||||
typedef struct hwc_layer_list {
|
||||
uint32_t flags;
|
||||
size_t numHwLayers;
|
||||
hwc_layer_t hwLayers[0];
|
||||
} hwc_layer_list_t;
|
||||
|
||||
/* This represents a display, typically an EGLDisplay object */
|
||||
typedef void* hwc_display_t;
|
||||
|
||||
/* This represents a surface, typically an EGLSurface object */
|
||||
typedef void* hwc_surface_t;
|
||||
|
||||
|
||||
/* see hwc_composer_device::registerProcs()
|
||||
* Any of the callbacks can be NULL, in which case the corresponding
|
||||
* functionality is not supported.
|
||||
*/
|
||||
typedef struct hwc_procs {
|
||||
/*
|
||||
* (*invalidate)() triggers a screen refresh, in particular prepare and set
|
||||
* will be called shortly after this call is made. Note that there is
|
||||
* NO GUARANTEE that the screen refresh will happen after invalidate()
|
||||
* returns (in particular, it could happen before).
|
||||
* invalidate() is GUARANTEED TO NOT CALL BACK into the h/w composer HAL and
|
||||
* it is safe to call invalidate() from any of hwc_composer_device
|
||||
* hooks, unless noted otherwise.
|
||||
*/
|
||||
void (*invalidate)(struct hwc_procs* procs);
|
||||
} hwc_procs_t;
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef struct hwc_module {
|
||||
struct hw_module_t common;
|
||||
} hwc_module_t;
|
||||
|
||||
|
||||
typedef struct hwc_composer_device {
|
||||
struct hw_device_t common;
|
||||
|
||||
/*
|
||||
* (*prepare)() is called for each frame before composition and is used by
|
||||
* SurfaceFlinger to determine what composition steps the HWC can handle.
|
||||
*
|
||||
* (*prepare)() can be called more than once, the last call prevails.
|
||||
*
|
||||
* The HWC responds by setting the compositionType field to either
|
||||
* HWC_FRAMEBUFFER or HWC_OVERLAY. In the former case, the composition for
|
||||
* this layer is handled by SurfaceFlinger with OpenGL ES, in the later
|
||||
* case, the HWC will have to handle this layer's composition.
|
||||
*
|
||||
* (*prepare)() is called with HWC_GEOMETRY_CHANGED to indicate that the
|
||||
* list's geometry has changed, that is, when more than just the buffer's
|
||||
* handles have been updated. Typically this happens (but is not limited to)
|
||||
* when a window is added, removed, resized or moved.
|
||||
*
|
||||
* a NULL list parameter or a numHwLayers of zero indicates that the
|
||||
* entire composition will be handled by SurfaceFlinger with OpenGL ES.
|
||||
*
|
||||
* returns: 0 on success. An negative error code on error. If an error is
|
||||
* returned, SurfaceFlinger will assume that none of the layer will be
|
||||
* handled by the HWC.
|
||||
*/
|
||||
int (*prepare)(struct hwc_composer_device *dev, hwc_layer_list_t* list);
|
||||
|
||||
|
||||
/*
|
||||
* (*set)() is used in place of eglSwapBuffers(), and assumes the same
|
||||
* functionality, except it also commits the work list atomically with
|
||||
* the actual eglSwapBuffers().
|
||||
*
|
||||
* The list parameter is guaranteed to be the same as the one returned
|
||||
* from the last call to (*prepare)().
|
||||
*
|
||||
* When this call returns the caller assumes that:
|
||||
*
|
||||
* - the display will be updated in the near future with the content
|
||||
* of the work list, without artifacts during the transition from the
|
||||
* previous frame.
|
||||
*
|
||||
* - all objects are available for immediate access or destruction, in
|
||||
* particular, hwc_region_t::rects data and hwc_layer_t::layer's buffer.
|
||||
* Note that this means that immediately accessing (potentially from a
|
||||
* different process) a buffer used in this call will not result in
|
||||
* screen corruption, the driver must apply proper synchronization or
|
||||
* scheduling (eg: block the caller, such as gralloc_module_t::lock(),
|
||||
* OpenGL ES, Camera, Codecs, etc..., or schedule the caller's work
|
||||
* after the buffer is freed from the actual composition).
|
||||
*
|
||||
* a NULL list parameter or a numHwLayers of zero indicates that the
|
||||
* entire composition has been handled by SurfaceFlinger with OpenGL ES.
|
||||
* In this case, (*set)() behaves just like eglSwapBuffers().
|
||||
*
|
||||
* dpy, sur, and list are set to NULL to indicate that the screen is
|
||||
* turning off. This happens WITHOUT prepare() being called first.
|
||||
* This is a good time to free h/w resources and/or power
|
||||
* the relevant h/w blocks down.
|
||||
*
|
||||
* IMPORTANT NOTE: there is an implicit layer containing opaque black
|
||||
* pixels behind all the layers in the list.
|
||||
* It is the responsibility of the hwcomposer module to make
|
||||
* sure black pixels are output (or blended from).
|
||||
*
|
||||
* returns: 0 on success. An negative error code on error:
|
||||
* HWC_EGL_ERROR: eglGetError() will provide the proper error code
|
||||
* Another code for non EGL errors.
|
||||
*
|
||||
*/
|
||||
int (*set)(struct hwc_composer_device *dev,
|
||||
hwc_display_t dpy,
|
||||
hwc_surface_t sur,
|
||||
hwc_layer_list_t* list);
|
||||
/*
|
||||
* This hook is OPTIONAL.
|
||||
*
|
||||
* If non NULL it will be called by SurfaceFlinger on dumpsys
|
||||
*/
|
||||
void (*dump)(struct hwc_composer_device* dev, char *buff, int buff_len);
|
||||
|
||||
/*
|
||||
* This hook is OPTIONAL.
|
||||
*
|
||||
* (*registerProcs)() registers a set of callbacks the h/w composer HAL
|
||||
* can later use. It is FORBIDDEN to call any of the callbacks from
|
||||
* within registerProcs(). registerProcs() must save the hwc_procs_t pointer
|
||||
* which is needed when calling a registered callback.
|
||||
* Each call to registerProcs replaces the previous set of callbacks.
|
||||
* registerProcs is called with NULL to unregister all callbacks.
|
||||
*
|
||||
* Any of the callbacks can be NULL, in which case the corresponding
|
||||
* functionality is not supported.
|
||||
*/
|
||||
void (*registerProcs)(struct hwc_composer_device* dev,
|
||||
hwc_procs_t const* procs);
|
||||
|
||||
void* reserved_proc[6];
|
||||
|
||||
/*
|
||||
* This API is called by Surfaceflinger to inform the HWC about the
|
||||
* HDMI status.
|
||||
*/
|
||||
void (*enableHDMIOutput)(struct hwc_composer_device* dev, bool enable);
|
||||
|
||||
} hwc_composer_device_t;
|
||||
|
||||
|
||||
/** convenience API for opening and closing a device */
|
||||
|
||||
static inline int hwc_open(const struct hw_module_t* module,
|
||||
hwc_composer_device_t** device) {
|
||||
return module->methods->open(module,
|
||||
HWC_HARDWARE_COMPOSER, (struct hw_device_t**)device);
|
||||
}
|
||||
|
||||
static inline int hwc_close(hwc_composer_device_t* device) {
|
||||
return device->common.close(&device->common);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H */
|
||||
Regular → Executable
+6
-22
@@ -1,6 +1,7 @@
|
||||
/* include/linux/android_pmem.h
|
||||
*
|
||||
* Copyright (C) 2007 Google, Inc.
|
||||
* Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
@@ -51,8 +52,8 @@
|
||||
* 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 PMEM_CACHE_FLUSH _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)
|
||||
@@ -100,7 +101,6 @@ enum pmem_allocator_type {
|
||||
* defined
|
||||
*/
|
||||
PMEM_ALLOCATORTYPE_BITMAP = 0, /* forced to be zero here */
|
||||
PMEM_ALLOCATORTYPE_SYSTEM,
|
||||
|
||||
PMEM_ALLOCATORTYPE_ALLORNOTHING,
|
||||
PMEM_ALLOCATORTYPE_BUDDYBESTFIT,
|
||||
@@ -135,6 +135,8 @@ int32_t pmem_kfree(const int32_t physaddr);
|
||||
struct android_pmem_platform_data
|
||||
{
|
||||
const char* name;
|
||||
/* starting physical address of memory region */
|
||||
unsigned long start;
|
||||
/* size of memory region */
|
||||
unsigned long size;
|
||||
|
||||
@@ -151,26 +153,8 @@ struct android_pmem_platform_data
|
||||
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;
|
||||
/* This PMEM is on memory that may be powered off */
|
||||
unsigned unstable;
|
||||
};
|
||||
|
||||
int pmem_setup(struct android_pmem_platform_data *pdata,
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#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"
|
||||
|
||||
#define ASHMEM_NOT_PURGED 0
|
||||
#define ASHMEM_WAS_PURGED 1
|
||||
|
||||
#define ASHMEM_IS_UNPINNED 0
|
||||
#define ASHMEM_IS_PINNED 1
|
||||
|
||||
struct ashmem_pin {
|
||||
__u32 offset;
|
||||
__u32 len;
|
||||
};
|
||||
|
||||
#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)
|
||||
|
||||
#endif
|
||||
Regular → Executable
@@ -1,556 +0,0 @@
|
||||
/*
|
||||
* include/linux/ion.h
|
||||
*
|
||||
* Copyright (C) 2011 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 _LINUX_ION_H
|
||||
#define _LINUX_ION_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
||||
struct ion_handle;
|
||||
/**
|
||||
* enum ion_heap_types - list of all possible types of heaps
|
||||
* @ION_HEAP_TYPE_SYSTEM: memory allocated via vmalloc
|
||||
* @ION_HEAP_TYPE_SYSTEM_CONTIG: memory allocated via kmalloc
|
||||
* @ION_HEAP_TYPE_CARVEOUT: memory allocated from a prereserved
|
||||
* carveout heap, allocations are physically
|
||||
* contiguous
|
||||
* @ION_HEAP_END: helper for iterating over heaps
|
||||
*/
|
||||
enum ion_heap_type {
|
||||
ION_HEAP_TYPE_SYSTEM,
|
||||
ION_HEAP_TYPE_SYSTEM_CONTIG,
|
||||
ION_HEAP_TYPE_CARVEOUT,
|
||||
ION_HEAP_TYPE_CUSTOM, /* must be last so device specific heaps always
|
||||
are at the end of this enum */
|
||||
ION_NUM_HEAPS,
|
||||
};
|
||||
|
||||
#define ION_HEAP_SYSTEM_MASK (1 << ION_HEAP_TYPE_SYSTEM)
|
||||
#define ION_HEAP_SYSTEM_CONTIG_MASK (1 << ION_HEAP_TYPE_SYSTEM_CONTIG)
|
||||
#define ION_HEAP_CARVEOUT_MASK (1 << ION_HEAP_TYPE_CARVEOUT)
|
||||
|
||||
|
||||
/**
|
||||
* These are the only ids that should be used for Ion heap ids.
|
||||
* The ids listed are the order in which allocation will be attempted
|
||||
* if specified. Don't swap the order of heap ids unless you know what
|
||||
* you are doing!
|
||||
*/
|
||||
|
||||
enum ion_heap_ids {
|
||||
ION_HEAP_SYSTEM_ID,
|
||||
ION_HEAP_SYSTEM_CONTIG_ID,
|
||||
ION_HEAP_EBI_ID,
|
||||
ION_HEAP_SMI_ID,
|
||||
ION_HEAP_ADSP_ID,
|
||||
ION_HEAP_AUDIO_ID,
|
||||
};
|
||||
|
||||
#define ION_KMALLOC_HEAP_NAME "kmalloc"
|
||||
#define ION_VMALLOC_HEAP_NAME "vmalloc"
|
||||
#define ION_EBI1_HEAP_NAME "EBI1"
|
||||
#define ION_ADSP_HEAP_NAME "adsp"
|
||||
#define ION_SMI_HEAP_NAME "smi"
|
||||
|
||||
#define CACHED 1
|
||||
#define UNCACHED 0
|
||||
|
||||
#define ION_CACHE_SHIFT 0
|
||||
|
||||
#define ION_SET_CACHE(__cache) ((__cache) << ION_CACHE_SHIFT)
|
||||
|
||||
#define ION_IS_CACHED(__flags) ((__flags) & (1 << ION_CACHE_SHIFT))
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/err.h>
|
||||
#include <mach/ion.h>
|
||||
struct ion_device;
|
||||
struct ion_heap;
|
||||
struct ion_mapper;
|
||||
struct ion_client;
|
||||
struct ion_buffer;
|
||||
|
||||
/* This should be removed some day when phys_addr_t's are fully
|
||||
plumbed in the kernel, and all instances of ion_phys_addr_t should
|
||||
be converted to phys_addr_t. For the time being many kernel interfaces
|
||||
do not accept phys_addr_t's that would have to */
|
||||
#define ion_phys_addr_t unsigned long
|
||||
|
||||
/**
|
||||
* struct ion_platform_heap - defines a heap in the given platform
|
||||
* @type: type of the heap from ion_heap_type enum
|
||||
* @id: unique identifier for heap. When allocating (lower numbers
|
||||
* will be allocated from first)
|
||||
* @name: used for debug purposes
|
||||
* @base: base address of heap in physical memory if applicable
|
||||
* @size: size of the heap in bytes if applicable
|
||||
*
|
||||
* Provided by the board file.
|
||||
*/
|
||||
struct ion_platform_heap {
|
||||
enum ion_heap_type type;
|
||||
unsigned int id;
|
||||
const char *name;
|
||||
ion_phys_addr_t base;
|
||||
size_t size;
|
||||
enum ion_memory_types memory_type;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ion_platform_data - array of platform heaps passed from board file
|
||||
* @nr: number of structures in the array
|
||||
* @request_region: function to be called when the number of allocations goes
|
||||
* from 0 -> 1
|
||||
* @release_region: function to be called when the number of allocations goes
|
||||
* from 1 -> 0
|
||||
* @setup_region: function to be called upon ion registration
|
||||
* @heaps: array of platform_heap structions
|
||||
*
|
||||
* Provided by the board file in the form of platform data to a platform device.
|
||||
*/
|
||||
struct ion_platform_data {
|
||||
int nr;
|
||||
void (*request_region)(void *);
|
||||
void (*release_region)(void *);
|
||||
void *(*setup_region)(void);
|
||||
struct ion_platform_heap heaps[];
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ION
|
||||
|
||||
/**
|
||||
* ion_client_create() - allocate a client and returns it
|
||||
* @dev: the global ion device
|
||||
* @heap_mask: mask of heaps this client can allocate from
|
||||
* @name: used for debugging
|
||||
*/
|
||||
struct ion_client *ion_client_create(struct ion_device *dev,
|
||||
unsigned int heap_mask, const char *name);
|
||||
|
||||
/**
|
||||
* msm_ion_client_create - allocate a client using the ion_device specified in
|
||||
* drivers/gpu/ion/msm/msm_ion.c
|
||||
*
|
||||
* heap_mask and name are the same as ion_client_create, return values
|
||||
* are the same as ion_client_create.
|
||||
*/
|
||||
|
||||
struct ion_client *msm_ion_client_create(unsigned int heap_mask,
|
||||
const char *name);
|
||||
|
||||
/**
|
||||
* ion_client_destroy() - free's a client and all it's handles
|
||||
* @client: the client
|
||||
*
|
||||
* Free the provided client and all it's resources including
|
||||
* any handles it is holding.
|
||||
*/
|
||||
void ion_client_destroy(struct ion_client *client);
|
||||
|
||||
/**
|
||||
* ion_alloc - allocate ion memory
|
||||
* @client: the client
|
||||
* @len: size of the allocation
|
||||
* @align: requested allocation alignment, lots of hardware blocks have
|
||||
* alignment requirements of some kind
|
||||
* @flags: mask of heaps to allocate from, if multiple bits are set
|
||||
* heaps will be tried in order from lowest to highest order bit
|
||||
*
|
||||
* Allocate memory in one of the heaps provided in heap mask and return
|
||||
* an opaque handle to it.
|
||||
*/
|
||||
struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
|
||||
size_t align, unsigned int flags);
|
||||
|
||||
/**
|
||||
* ion_free - free a handle
|
||||
* @client: the client
|
||||
* @handle: the handle to free
|
||||
*
|
||||
* Free the provided handle.
|
||||
*/
|
||||
void ion_free(struct ion_client *client, struct ion_handle *handle);
|
||||
|
||||
/**
|
||||
* ion_phys - returns the physical address and len of a handle
|
||||
* @client: the client
|
||||
* @handle: the handle
|
||||
* @addr: a pointer to put the address in
|
||||
* @len: a pointer to put the length in
|
||||
*
|
||||
* This function queries the heap for a particular handle to get the
|
||||
* handle's physical address. It't output is only correct if
|
||||
* a heap returns physically contiguous memory -- in other cases
|
||||
* this api should not be implemented -- ion_map_dma should be used
|
||||
* instead. Returns -EINVAL if the handle is invalid. This has
|
||||
* no implications on the reference counting of the handle --
|
||||
* the returned value may not be valid if the caller is not
|
||||
* holding a reference.
|
||||
*/
|
||||
int ion_phys(struct ion_client *client, struct ion_handle *handle,
|
||||
ion_phys_addr_t *addr, size_t *len);
|
||||
|
||||
/**
|
||||
* ion_map_kernel - create mapping for the given handle
|
||||
* @client: the client
|
||||
* @handle: handle to map
|
||||
* @flags: flags for this mapping
|
||||
*
|
||||
* Map the given handle into the kernel and return a kernel address that
|
||||
* can be used to access this address. If no flags are specified, this
|
||||
* will return a non-secure uncached mapping.
|
||||
*/
|
||||
void *ion_map_kernel(struct ion_client *client, struct ion_handle *handle,
|
||||
unsigned long flags);
|
||||
|
||||
/**
|
||||
* ion_unmap_kernel() - destroy a kernel mapping for a handle
|
||||
* @client: the client
|
||||
* @handle: handle to unmap
|
||||
*/
|
||||
void ion_unmap_kernel(struct ion_client *client, struct ion_handle *handle);
|
||||
|
||||
/**
|
||||
* ion_map_dma - create a dma mapping for a given handle
|
||||
* @client: the client
|
||||
* @handle: handle to map
|
||||
*
|
||||
* Return an sglist describing the given handle
|
||||
*/
|
||||
struct scatterlist *ion_map_dma(struct ion_client *client,
|
||||
struct ion_handle *handle,
|
||||
unsigned long flags);
|
||||
|
||||
/**
|
||||
* ion_unmap_dma() - destroy a dma mapping for a handle
|
||||
* @client: the client
|
||||
* @handle: handle to unmap
|
||||
*/
|
||||
void ion_unmap_dma(struct ion_client *client, struct ion_handle *handle);
|
||||
|
||||
/**
|
||||
* ion_share() - given a handle, obtain a buffer to pass to other clients
|
||||
* @client: the client
|
||||
* @handle: the handle to share
|
||||
*
|
||||
* Given a handle, return a buffer, which exists in a global name
|
||||
* space, and can be passed to other clients. Should be passed into ion_import
|
||||
* to obtain a new handle for this buffer.
|
||||
*
|
||||
* NOTE: This function does do not an extra reference. The burden is on the
|
||||
* caller to make sure the buffer doesn't go away while it's being passed to
|
||||
* another client. That is, ion_free should not be called on this handle until
|
||||
* the buffer has been imported into the other client.
|
||||
*/
|
||||
struct ion_buffer *ion_share(struct ion_client *client,
|
||||
struct ion_handle *handle);
|
||||
|
||||
/**
|
||||
* ion_import() - given an buffer in another client, import it
|
||||
* @client: this blocks client
|
||||
* @buffer: the buffer to import (as obtained from ion_share)
|
||||
*
|
||||
* Given a buffer, add it to the client and return the handle to use to refer
|
||||
* to it further. This is called to share a handle from one kernel client to
|
||||
* another.
|
||||
*/
|
||||
struct ion_handle *ion_import(struct ion_client *client,
|
||||
struct ion_buffer *buffer);
|
||||
|
||||
/**
|
||||
* ion_import_fd() - given an fd obtained via ION_IOC_SHARE ioctl, import it
|
||||
* @client: this blocks client
|
||||
* @fd: the fd
|
||||
*
|
||||
* A helper function for drivers that will be recieving ion buffers shared
|
||||
* with them from userspace. These buffers are represented by a file
|
||||
* descriptor obtained as the return from the ION_IOC_SHARE ioctl.
|
||||
* This function coverts that fd into the underlying buffer, and returns
|
||||
* the handle to use to refer to it further.
|
||||
*/
|
||||
struct ion_handle *ion_import_fd(struct ion_client *client, int fd);
|
||||
|
||||
/**
|
||||
* ion_handle_get_flags - get the flags for a given handle
|
||||
*
|
||||
* @client - client who allocated the handle
|
||||
* @handle - handle to get the flags
|
||||
* @flags - pointer to store the flags
|
||||
*
|
||||
* Gets the current flags for a handle. These flags indicate various options
|
||||
* of the buffer (caching, security, etc.)
|
||||
*/
|
||||
int ion_handle_get_flags(struct ion_client *client, struct ion_handle *handle,
|
||||
unsigned long *flags);
|
||||
|
||||
#else
|
||||
static inline struct ion_client *ion_client_create(struct ion_device *dev,
|
||||
unsigned int heap_mask, const char *name)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct ion_client *msm_ion_client_create(unsigned int heap_mask,
|
||||
const char *name)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void ion_client_destroy(struct ion_client *client) { }
|
||||
|
||||
static inline struct ion_handle *ion_alloc(struct ion_client *client,
|
||||
size_t len, size_t align, unsigned int flags)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void ion_free(struct ion_client *client,
|
||||
struct ion_handle *handle) { }
|
||||
|
||||
|
||||
static inline int ion_phys(struct ion_client *client,
|
||||
struct ion_handle *handle, ion_phys_addr_t *addr, size_t *len)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline void *ion_map_kernel(struct ion_client *client,
|
||||
struct ion_handle *handle, unsigned long flags)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void ion_unmap_kernel(struct ion_client *client,
|
||||
struct ion_handle *handle) { }
|
||||
|
||||
static inline struct scatterlist *ion_map_dma(struct ion_client *client,
|
||||
struct ion_handle *handle, unsigned long flags)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void ion_unmap_dma(struct ion_client *client,
|
||||
struct ion_handle *handle) { }
|
||||
|
||||
static inline struct ion_buffer *ion_share(struct ion_client *client,
|
||||
struct ion_handle *handle)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct ion_handle *ion_import(struct ion_client *client,
|
||||
struct ion_buffer *buffer)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct ion_handle *ion_import_fd(struct ion_client *client,
|
||||
int fd)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline int ion_handle_get_flags(struct ion_client *client,
|
||||
struct ion_handle *handle, unsigned long *flags)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif /* CONFIG_ION */
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/**
|
||||
* DOC: Ion Userspace API
|
||||
*
|
||||
* create a client by opening /dev/ion
|
||||
* most operations handled via following ioctls
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* struct ion_allocation_data - metadata passed from userspace for allocations
|
||||
* @len: size of the allocation
|
||||
* @align: required alignment of the allocation
|
||||
* @flags: flags passed to heap
|
||||
* @handle: pointer that will be populated with a cookie to use to refer
|
||||
* to this allocation
|
||||
*
|
||||
* Provided by userspace as an argument to the ioctl
|
||||
*/
|
||||
struct ion_allocation_data {
|
||||
size_t len;
|
||||
size_t align;
|
||||
unsigned int flags;
|
||||
struct ion_handle *handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ion_fd_data - metadata passed to/from userspace for a handle/fd pair
|
||||
* @handle: a handle
|
||||
* @fd: a file descriptor representing that handle
|
||||
*
|
||||
* For ION_IOC_SHARE or ION_IOC_MAP userspace populates the handle field with
|
||||
* the handle returned from ion alloc, and the kernel returns the file
|
||||
* descriptor to share or map in the fd field. For ION_IOC_IMPORT, userspace
|
||||
* provides the file descriptor and the kernel returns the handle.
|
||||
*/
|
||||
struct ion_fd_data {
|
||||
struct ion_handle *handle;
|
||||
int fd;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ion_handle_data - a handle passed to/from the kernel
|
||||
* @handle: a handle
|
||||
*/
|
||||
struct ion_handle_data {
|
||||
struct ion_handle *handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ion_custom_data - metadata passed to/from userspace for a custom ioctl
|
||||
* @cmd: the custom ioctl function to call
|
||||
* @arg: additional data to pass to the custom ioctl, typically a user
|
||||
* pointer to a predefined structure
|
||||
*
|
||||
* This works just like the regular cmd and arg fields of an ioctl.
|
||||
*/
|
||||
struct ion_custom_data {
|
||||
unsigned int cmd;
|
||||
unsigned long arg;
|
||||
};
|
||||
|
||||
|
||||
/* struct ion_flush_data - data passed to ion for flushing caches
|
||||
*
|
||||
* @handle: handle with data to flush
|
||||
* @vaddr: userspace virtual address mapped with mmap
|
||||
* @offset: offset into the handle to flush
|
||||
* @length: length of handle to flush
|
||||
*
|
||||
* Performs cache operations on the handle. If p is the start address
|
||||
* of the handle, p + offset through p + offset + length will have
|
||||
* the cache operations performed
|
||||
*/
|
||||
struct ion_flush_data {
|
||||
struct ion_handle *handle;
|
||||
void *vaddr;
|
||||
unsigned int offset;
|
||||
unsigned int length;
|
||||
};
|
||||
|
||||
/* struct ion_flag_data - information about flags for this buffer
|
||||
*
|
||||
* @handle: handle to get flags from
|
||||
* @flags: flags of this handle
|
||||
*
|
||||
* Takes handle as an input and outputs the flags from the handle
|
||||
* in the flag field.
|
||||
*/
|
||||
struct ion_flag_data {
|
||||
struct ion_handle *handle;
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
#define ION_IOC_MAGIC 'I'
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_ALLOC - allocate memory
|
||||
*
|
||||
* Takes an ion_allocation_data struct and returns it with the handle field
|
||||
* populated with the opaque handle for the allocation.
|
||||
*/
|
||||
#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, \
|
||||
struct ion_allocation_data)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_FREE - free memory
|
||||
*
|
||||
* Takes an ion_handle_data struct and frees the handle.
|
||||
*/
|
||||
#define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_MAP - get a file descriptor to mmap
|
||||
*
|
||||
* Takes an ion_fd_data struct with the handle field populated with a valid
|
||||
* opaque handle. Returns the struct with the fd field set to a file
|
||||
* descriptor open in the current address space. This file descriptor
|
||||
* can then be used as an argument to mmap.
|
||||
*/
|
||||
#define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_SHARE - creates a file descriptor to use to share an allocation
|
||||
*
|
||||
* Takes an ion_fd_data struct with the handle field populated with a valid
|
||||
* opaque handle. Returns the struct with the fd field set to a file
|
||||
* descriptor open in the current address space. This file descriptor
|
||||
* can then be passed to another process. The corresponding opaque handle can
|
||||
* be retrieved via ION_IOC_IMPORT.
|
||||
*/
|
||||
#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_IMPORT - imports a shared file descriptor
|
||||
*
|
||||
* Takes an ion_fd_data struct with the fd field populated with a valid file
|
||||
* descriptor obtained from ION_IOC_SHARE and returns the struct with the handle
|
||||
* filed set to the corresponding opaque handle.
|
||||
*/
|
||||
#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, int)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_CUSTOM - call architecture specific ion ioctl
|
||||
*
|
||||
* Takes the argument of the architecture specific ioctl to call and
|
||||
* passes appropriate userdata for that ioctl
|
||||
*/
|
||||
#define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data)
|
||||
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_CLEAN_CACHES - clean the caches
|
||||
*
|
||||
* Clean the caches of the handle specified.
|
||||
*/
|
||||
#define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_MAGIC, 7, \
|
||||
struct ion_flush_data)
|
||||
/**
|
||||
* DOC: ION_MSM_IOC_INV_CACHES - invalidate the caches
|
||||
*
|
||||
* Invalidate the caches of the handle specified.
|
||||
*/
|
||||
#define ION_IOC_INV_CACHES _IOWR(ION_IOC_MAGIC, 8, \
|
||||
struct ion_flush_data)
|
||||
/**
|
||||
* DOC: ION_MSM_IOC_CLEAN_CACHES - clean and invalidate the caches
|
||||
*
|
||||
* Clean and invalidate the caches of the handle specified.
|
||||
*/
|
||||
#define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_MAGIC, 9, \
|
||||
struct ion_flush_data)
|
||||
|
||||
/**
|
||||
* DOC: ION_IOC_GET_FLAGS - get the flags of the handle
|
||||
*
|
||||
* Gets the flags of the current handle which indicate cachability,
|
||||
* secure state etc.
|
||||
*/
|
||||
#define ION_IOC_GET_FLAGS _IOWR(ION_IOC_MAGIC, 10, \
|
||||
struct ion_flag_data)
|
||||
#endif /* _LINUX_ION_H */
|
||||
@@ -1,329 +0,0 @@
|
||||
/* include/linux/msm_audio.h
|
||||
*
|
||||
* Copyright (C) 2008 Google, Inc.
|
||||
* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* 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 __LINUX_MSM_AUDIO_H
|
||||
#define __LINUX_MSM_AUDIO_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <asm/sizes.h>
|
||||
|
||||
/* PCM Audio */
|
||||
|
||||
#define AUDIO_IOCTL_MAGIC 'a'
|
||||
|
||||
#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned)
|
||||
#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned)
|
||||
#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned)
|
||||
#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned)
|
||||
#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned)
|
||||
#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned)
|
||||
#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned)
|
||||
#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned)
|
||||
#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned)
|
||||
#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned)
|
||||
#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned)
|
||||
#define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned)
|
||||
#define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned)
|
||||
#define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, unsigned)
|
||||
#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned)
|
||||
#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned)
|
||||
#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned)
|
||||
#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, unsigned)
|
||||
#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, unsigned)
|
||||
#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode)
|
||||
#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned)
|
||||
#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, \
|
||||
struct msm_snd_device_list)
|
||||
#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned)
|
||||
#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned)
|
||||
#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, \
|
||||
struct msm_audio_route_config)
|
||||
#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned)
|
||||
#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned)
|
||||
#define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned)
|
||||
#define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned)
|
||||
#define AUDIO_UPDATE_ACDB _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned)
|
||||
#define AUDIO_START_VOICE _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned)
|
||||
#define AUDIO_STOP_VOICE _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned)
|
||||
#define AUDIO_REINIT_ACDB _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned)
|
||||
#define AUDIO_OUTPORT_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short)
|
||||
#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, \
|
||||
unsigned short)
|
||||
#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, \
|
||||
struct msm_audio_bitstream_error_info)
|
||||
/* Qualcomm extensions */
|
||||
#define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, \
|
||||
struct msm_audio_stream_config)
|
||||
#define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 81, \
|
||||
struct msm_audio_stream_config)
|
||||
#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short)
|
||||
#define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 83, \
|
||||
struct msm_audio_bitstream_info)
|
||||
#define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned)
|
||||
#define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned)
|
||||
#define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned)
|
||||
#define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 87, \
|
||||
struct msm_vol_info)
|
||||
#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned)
|
||||
#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned)
|
||||
#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned)
|
||||
#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned)
|
||||
#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned)
|
||||
|
||||
#define AUDIO_MAX_COMMON_IOCTL_NUM 100
|
||||
|
||||
|
||||
#define HANDSET_MIC 0x01
|
||||
#define HANDSET_SPKR 0x02
|
||||
#define HEADSET_MIC 0x03
|
||||
#define HEADSET_SPKR_MONO 0x04
|
||||
#define HEADSET_SPKR_STEREO 0x05
|
||||
#define SPKR_PHONE_MIC 0x06
|
||||
#define SPKR_PHONE_MONO 0x07
|
||||
#define SPKR_PHONE_STEREO 0x08
|
||||
#define BT_SCO_MIC 0x09
|
||||
#define BT_SCO_SPKR 0x0A
|
||||
#define BT_A2DP_SPKR 0x0B
|
||||
#define TTY_HEADSET_MIC 0x0C
|
||||
#define TTY_HEADSET_SPKR 0x0D
|
||||
|
||||
/* Default devices are not supported in a */
|
||||
/* device switching context. Only supported */
|
||||
/* for stream devices. */
|
||||
/* DO NOT USE */
|
||||
#define DEFAULT_TX 0x0E
|
||||
#define DEFAULT_RX 0x0F
|
||||
|
||||
#define BT_A2DP_TX 0x10
|
||||
|
||||
#define HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11
|
||||
#define HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12
|
||||
#define HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13
|
||||
#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14
|
||||
|
||||
#define I2S_RX 0x20
|
||||
#define I2S_TX 0x21
|
||||
|
||||
#define ADRC_ENABLE 0x0001
|
||||
#define EQ_ENABLE 0x0002
|
||||
#define IIR_ENABLE 0x0004
|
||||
#define QCONCERT_PLUS_ENABLE 0x0008
|
||||
#define MBADRC_ENABLE 0x0010
|
||||
|
||||
#define AGC_ENABLE 0x0001
|
||||
#define NS_ENABLE 0x0002
|
||||
#define TX_IIR_ENABLE 0x0004
|
||||
|
||||
#define VOC_REC_UPLINK 0x00
|
||||
#define VOC_REC_DOWNLINK 0x01
|
||||
#define VOC_REC_BOTH 0x02
|
||||
|
||||
struct msm_audio_config {
|
||||
uint32_t buffer_size;
|
||||
uint32_t buffer_count;
|
||||
uint32_t channel_count;
|
||||
uint32_t sample_rate;
|
||||
uint32_t type;
|
||||
uint32_t meta_field;
|
||||
uint32_t bits;
|
||||
uint32_t unused[3];
|
||||
};
|
||||
|
||||
struct msm_audio_stream_config {
|
||||
uint32_t buffer_size;
|
||||
uint32_t buffer_count;
|
||||
};
|
||||
|
||||
struct msm_audio_stats {
|
||||
uint32_t byte_count;
|
||||
uint32_t sample_count;
|
||||
uint32_t unused[2];
|
||||
};
|
||||
|
||||
struct msm_audio_pmem_info {
|
||||
int fd;
|
||||
void *vaddr;
|
||||
};
|
||||
|
||||
struct msm_audio_aio_buf {
|
||||
void *buf_addr;
|
||||
uint32_t buf_len;
|
||||
uint32_t data_len;
|
||||
void *private_data;
|
||||
unsigned short mfield_sz; /*only useful for data has meta field */
|
||||
};
|
||||
|
||||
/* Audio routing */
|
||||
|
||||
#define SND_IOCTL_MAGIC 's'
|
||||
|
||||
#define SND_MUTE_UNMUTED 0
|
||||
#define SND_MUTE_MUTED 1
|
||||
|
||||
struct msm_mute_info {
|
||||
uint32_t mute;
|
||||
uint32_t path;
|
||||
};
|
||||
|
||||
struct msm_vol_info {
|
||||
uint32_t vol;
|
||||
uint32_t path;
|
||||
};
|
||||
|
||||
struct msm_voicerec_mode {
|
||||
uint32_t rec_mode;
|
||||
};
|
||||
|
||||
struct msm_snd_device_config {
|
||||
uint32_t device;
|
||||
uint32_t ear_mute;
|
||||
uint32_t mic_mute;
|
||||
};
|
||||
|
||||
#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *)
|
||||
|
||||
#define SND_METHOD_VOICE 0
|
||||
|
||||
struct msm_snd_volume_config {
|
||||
uint32_t device;
|
||||
uint32_t method;
|
||||
uint32_t volume;
|
||||
};
|
||||
|
||||
#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *)
|
||||
|
||||
/* Returns the number of SND endpoints supported. */
|
||||
|
||||
#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
|
||||
|
||||
struct msm_snd_endpoint {
|
||||
int id; /* input and output */
|
||||
char name[64]; /* output only */
|
||||
};
|
||||
|
||||
/* Takes an index between 0 and one less than the number returned by
|
||||
* SND_GET_NUM_ENDPOINTS, and returns the SND index and name of a
|
||||
* SND endpoint. On input, the .id field contains the number of the
|
||||
* endpoint, and on exit it contains the SND index, while .name contains
|
||||
* the description of the endpoint.
|
||||
*/
|
||||
|
||||
#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *)
|
||||
|
||||
|
||||
#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *)
|
||||
#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *)
|
||||
|
||||
struct msm_audio_pcm_config {
|
||||
uint32_t pcm_feedback; /* 0 - disable > 0 - enable */
|
||||
uint32_t buffer_count; /* Number of buffers to allocate */
|
||||
uint32_t buffer_size; /* Size of buffer for capturing of
|
||||
PCM samples */
|
||||
};
|
||||
|
||||
#define AUDIO_EVENT_SUSPEND 0
|
||||
#define AUDIO_EVENT_RESUME 1
|
||||
#define AUDIO_EVENT_WRITE_DONE 2
|
||||
#define AUDIO_EVENT_READ_DONE 3
|
||||
#define AUDIO_EVENT_STREAM_INFO 4
|
||||
#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5
|
||||
|
||||
#define AUDIO_CODEC_TYPE_MP3 0
|
||||
#define AUDIO_CODEC_TYPE_AAC 1
|
||||
|
||||
struct msm_audio_bitstream_info {
|
||||
uint32_t codec_type;
|
||||
uint32_t chan_info;
|
||||
uint32_t sample_rate;
|
||||
uint32_t bit_stream_info;
|
||||
uint32_t bit_rate;
|
||||
uint32_t unused[3];
|
||||
};
|
||||
|
||||
struct msm_audio_bitstream_error_info {
|
||||
uint32_t dec_id;
|
||||
uint32_t err_msg_indicator;
|
||||
uint32_t err_type;
|
||||
};
|
||||
|
||||
union msm_audio_event_payload {
|
||||
struct msm_audio_aio_buf aio_buf;
|
||||
struct msm_audio_bitstream_info stream_info;
|
||||
struct msm_audio_bitstream_error_info error_info;
|
||||
int reserved;
|
||||
};
|
||||
|
||||
struct msm_audio_event {
|
||||
int event_type;
|
||||
int timeout_ms;
|
||||
union msm_audio_event_payload event_payload;
|
||||
};
|
||||
|
||||
#define MSM_SNDDEV_CAP_RX 0x1
|
||||
#define MSM_SNDDEV_CAP_TX 0x2
|
||||
#define MSM_SNDDEV_CAP_VOICE 0x4
|
||||
|
||||
struct msm_snd_device_info {
|
||||
uint32_t dev_id;
|
||||
uint32_t dev_cap; /* bitmask describe capability of device */
|
||||
char dev_name[64];
|
||||
};
|
||||
|
||||
struct msm_snd_device_list {
|
||||
uint32_t num_dev; /* Indicate number of device info to be retrieved */
|
||||
struct msm_snd_device_info *list;
|
||||
};
|
||||
|
||||
struct msm_dtmf_config {
|
||||
uint16_t path;
|
||||
uint16_t dtmf_hi;
|
||||
uint16_t dtmf_low;
|
||||
uint16_t duration;
|
||||
uint16_t tx_gain;
|
||||
uint16_t rx_gain;
|
||||
uint16_t mixing;
|
||||
};
|
||||
|
||||
#define AUDIO_ROUTE_STREAM_VOICE_RX 0
|
||||
#define AUDIO_ROUTE_STREAM_VOICE_TX 1
|
||||
#define AUDIO_ROUTE_STREAM_PLAYBACK 2
|
||||
#define AUDIO_ROUTE_STREAM_REC 3
|
||||
|
||||
struct msm_audio_route_config {
|
||||
uint32_t stream_type;
|
||||
uint32_t stream_id;
|
||||
uint32_t dev_id;
|
||||
};
|
||||
|
||||
#define AUDIO_MAX_EQ_BANDS 12
|
||||
|
||||
struct msm_audio_eq_band {
|
||||
uint16_t band_idx; /* The band index, 0 .. 11 */
|
||||
uint32_t filter_type; /* Filter band type */
|
||||
uint32_t center_freq_hz; /* Filter band center frequency */
|
||||
uint32_t filter_gain; /* Filter band initial gain (dB) */
|
||||
/* Range is +12 dB to -12 dB with 1dB increments. */
|
||||
uint32_t q_factor;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct msm_audio_eq_stream_config {
|
||||
uint32_t enable; /* Number of consequtive bands specified */
|
||||
uint32_t num_bands;
|
||||
struct msm_audio_eq_band eq_bands[AUDIO_MAX_EQ_BANDS];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#endif
|
||||
@@ -1,78 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_AUDIO_AAC_H
|
||||
#define __MSM_AUDIO_AAC_H
|
||||
|
||||
#include <linux/msm_audio.h>
|
||||
|
||||
#define AUDIO_SET_AAC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
|
||||
#define AUDIO_GET_AAC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
|
||||
|
||||
#define AUDIO_SET_AAC_ENC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), struct msm_audio_aac_enc_config)
|
||||
|
||||
#define AUDIO_GET_AAC_ENC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+4), struct msm_audio_aac_enc_config)
|
||||
|
||||
#define AUDIO_AAC_FORMAT_ADTS -1
|
||||
#define AUDIO_AAC_FORMAT_RAW 0x0000
|
||||
#define AUDIO_AAC_FORMAT_PSUEDO_RAW 0x0001
|
||||
#define AUDIO_AAC_FORMAT_LOAS 0x0002
|
||||
|
||||
#define AUDIO_AAC_OBJECT_LC 0x0002
|
||||
#define AUDIO_AAC_OBJECT_LTP 0x0004
|
||||
#define AUDIO_AAC_OBJECT_ERLC 0x0011
|
||||
#define AUDIO_AAC_OBJECT_BSAC 0x0016
|
||||
|
||||
#define AUDIO_AAC_SEC_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SEC_DATA_RES_OFF 0x0000
|
||||
|
||||
#define AUDIO_AAC_SCA_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SCA_DATA_RES_OFF 0x0000
|
||||
|
||||
#define AUDIO_AAC_SPEC_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SPEC_DATA_RES_OFF 0x0000
|
||||
|
||||
#define AUDIO_AAC_SBR_ON_FLAG_ON 0x0001
|
||||
#define AUDIO_AAC_SBR_ON_FLAG_OFF 0x0000
|
||||
|
||||
#define AUDIO_AAC_SBR_PS_ON_FLAG_ON 0x0001
|
||||
#define AUDIO_AAC_SBR_PS_ON_FLAG_OFF 0x0000
|
||||
|
||||
#define AUDIO_AAC_DUAL_MONO_PL_PR 0
|
||||
|
||||
#define AUDIO_AAC_DUAL_MONO_SL_SR 1
|
||||
|
||||
#define AUDIO_AAC_DUAL_MONO_SL_PR 2
|
||||
|
||||
#define AUDIO_AAC_DUAL_MONO_PL_SR 3
|
||||
|
||||
struct msm_audio_aac_config {
|
||||
signed short format;
|
||||
unsigned short audio_object;
|
||||
unsigned short ep_config;
|
||||
unsigned short aac_section_data_resilience_flag;
|
||||
unsigned short aac_scalefactor_data_resilience_flag;
|
||||
unsigned short aac_spectral_data_resilience_flag;
|
||||
unsigned short sbr_on_flag;
|
||||
unsigned short sbr_ps_on_flag;
|
||||
unsigned short dual_mono_mode;
|
||||
unsigned short channel_configuration;
|
||||
};
|
||||
|
||||
struct msm_audio_aac_enc_config {
|
||||
uint32_t channels;
|
||||
uint32_t sample_rate;
|
||||
uint32_t bit_rate;
|
||||
uint32_t stream_format;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Regular → Executable
+56
-48
@@ -1,8 +1,41 @@
|
||||
/* Copyright (c) 2002,2007-2011, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, and the entire permission notice in its entirety,
|
||||
* including the disclaimer of warranties.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* ALTERNATIVELY, this product may be distributed under the terms of
|
||||
* the GNU General Public License, version 2, in which case the provisions
|
||||
* of the GPL version 2 are required INSTEAD OF the BSD license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
|
||||
* WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef _MSM_KGSL_H
|
||||
#define _MSM_KGSL_H
|
||||
|
||||
#define KGSL_VERSION_MAJOR 3
|
||||
#define KGSL_VERSION_MINOR 8
|
||||
#define KGSL_VERSION_MINOR 7
|
||||
|
||||
/*context flags */
|
||||
#define KGSL_CONTEXT_SAVE_GMEM 1
|
||||
@@ -25,19 +58,8 @@
|
||||
#define KGSL_FLAGS_RESERVED2 0x00000080
|
||||
#define KGSL_FLAGS_SOFT_RESET 0x00000100
|
||||
|
||||
/* Clock flags to show which clocks should be controled by a given platform */
|
||||
#define KGSL_CLK_SRC 0x00000001
|
||||
#define KGSL_CLK_CORE 0x00000002
|
||||
#define KGSL_CLK_IFACE 0x00000004
|
||||
#define KGSL_CLK_MEM 0x00000008
|
||||
#define KGSL_CLK_MEM_IFACE 0x00000010
|
||||
#define KGSL_CLK_AXI 0x00000020
|
||||
|
||||
#define KGSL_MAX_PWRLEVELS 5
|
||||
|
||||
#define KGSL_CONVERT_TO_MBPS(val) \
|
||||
(val*1000*1000U)
|
||||
|
||||
/* device id */
|
||||
enum kgsl_deviceid {
|
||||
KGSL_DEVICE_3D0 = 0x00000000,
|
||||
@@ -49,8 +71,7 @@ enum kgsl_deviceid {
|
||||
enum kgsl_user_mem_type {
|
||||
KGSL_USER_MEM_TYPE_PMEM = 0x00000000,
|
||||
KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001,
|
||||
KGSL_USER_MEM_TYPE_ADDR = 0x00000002,
|
||||
KGSL_USER_MEM_TYPE_ION = 0x00000003,
|
||||
KGSL_USER_MEM_TYPE_ADDR = 0x00000002
|
||||
};
|
||||
|
||||
struct kgsl_devinfo {
|
||||
@@ -62,11 +83,9 @@ struct kgsl_devinfo {
|
||||
unsigned int chip_id;
|
||||
unsigned int mmu_enabled;
|
||||
unsigned int gmem_gpubaseaddr;
|
||||
/*
|
||||
* This field contains the adreno revision
|
||||
* number 200, 205, 220, etc...
|
||||
*/
|
||||
unsigned int gpu_id;
|
||||
/* if gmem_hostbaseaddr is NULL, we would know its not mapped into
|
||||
* mmio space */
|
||||
unsigned int gmem_hostbaseaddr;
|
||||
unsigned int gmem_sizebytes;
|
||||
};
|
||||
|
||||
@@ -119,7 +138,6 @@ struct kgsl_shadowprop {
|
||||
struct kgsl_pwrlevel {
|
||||
unsigned int gpu_freq;
|
||||
unsigned int bus_freq;
|
||||
unsigned int io_fraction;
|
||||
};
|
||||
|
||||
struct kgsl_version {
|
||||
@@ -138,17 +156,31 @@ struct kgsl_version {
|
||||
#define KGSL_2D1_REG_MEMORY "kgsl_2d1_reg_memory"
|
||||
#define KGSL_2D1_IRQ "kgsl_2d1_irq"
|
||||
|
||||
struct kgsl_device_platform_data {
|
||||
struct kgsl_grp_clk_name {
|
||||
const char *clk;
|
||||
const char *pclk;
|
||||
};
|
||||
|
||||
struct kgsl_device_pwr_data {
|
||||
struct kgsl_pwrlevel pwrlevel[KGSL_MAX_PWRLEVELS];
|
||||
int init_level;
|
||||
int num_levels;
|
||||
int (*set_grp_async)(void);
|
||||
unsigned int idle_timeout;
|
||||
unsigned int nap_allowed;
|
||||
unsigned int clk_map;
|
||||
unsigned int idle_pass;
|
||||
};
|
||||
|
||||
struct kgsl_clk_data {
|
||||
struct kgsl_grp_clk_name name;
|
||||
struct msm_bus_scale_pdata *bus_scale_table;
|
||||
const char *iommu_user_ctx_name;
|
||||
const char *iommu_priv_ctx_name;
|
||||
};
|
||||
|
||||
struct kgsl_device_platform_data {
|
||||
struct kgsl_device_pwr_data pwr_data;
|
||||
struct kgsl_clk_data clk;
|
||||
/* imem_clk_name is for 3d only, not used in 2d devices */
|
||||
struct kgsl_grp_clk_name imem_clk_name;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -420,30 +452,6 @@ struct kgsl_cff_syncmem {
|
||||
#define IOCTL_KGSL_CFF_SYNCMEM \
|
||||
_IOW(KGSL_IOC_TYPE, 0x30, struct kgsl_cff_syncmem)
|
||||
|
||||
/*
|
||||
* A timestamp event allows the user space to register an action following an
|
||||
* expired timestamp.
|
||||
*/
|
||||
|
||||
struct kgsl_timestamp_event {
|
||||
int type; /* Type of event (see list below) */
|
||||
unsigned int timestamp; /* Timestamp to trigger event on */
|
||||
unsigned int context_id; /* Context for the timestamp */
|
||||
void *priv; /* Pointer to the event specific blob */
|
||||
size_t len; /* Size of the event specific blob */
|
||||
};
|
||||
|
||||
#define IOCTL_KGSL_TIMESTAMP_EVENT \
|
||||
_IOW(KGSL_IOC_TYPE, 0x31, struct kgsl_timestamp_event)
|
||||
|
||||
/* A genlock timestamp event releases an existing lock on timestamp expire */
|
||||
|
||||
#define KGSL_TIMESTAMP_EVENT_GENLOCK 1
|
||||
|
||||
struct kgsl_timestamp_event_genlock {
|
||||
int handle; /* Handle of the genlock lock to release */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#ifdef CONFIG_MSM_KGSL_DRM
|
||||
int kgsl_gem_obj_addr(int drm_fd, int handle, unsigned long *start,
|
||||
|
||||
Regular → Executable
+30
-278
@@ -15,90 +15,25 @@
|
||||
#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 */
|
||||
MDP_RGB_565, /* RGB 565 planar */
|
||||
MDP_XRGB_8888, /* RGB 888 padded */
|
||||
MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planar w/ Cb is in MSB */
|
||||
MDP_ARGB_8888, /* ARGB 888 */
|
||||
MDP_RGB_888, /* RGB 888 planar */
|
||||
MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planar w/ Cr is in MSB */
|
||||
MDP_YCRYCB_H2V1, /* YCrYCb interleave */
|
||||
MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planar w/ Cr is in MSB */
|
||||
MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planar w/ Cr is in MSB */
|
||||
MDP_RGBA_8888, /* ARGB 888 */
|
||||
MDP_BGRA_8888, /* ABGR 888 */
|
||||
MDP_RGBX_8888, /* RGBX 888 */
|
||||
MDP_IMGTYPE_LIMIT /* Non valid image type after this enum */
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -106,54 +41,24 @@ enum {
|
||||
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
|
||||
/* 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_ROT_MASK 0x7
|
||||
#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_TRANSP_NOP 0xffffffff
|
||||
#define MDP_ALPHA_NOP 0xff
|
||||
|
||||
/* drewis: added for android 4.0 */
|
||||
#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)
|
||||
/* drewis: end */
|
||||
|
||||
struct mdp_rect {
|
||||
uint32_t x;
|
||||
@@ -168,41 +73,8 @@ struct mdp_img {
|
||||
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;
|
||||
@@ -211,7 +83,6 @@ struct mdp_blit_req {
|
||||
uint32_t alpha;
|
||||
uint32_t transp_mask;
|
||||
uint32_t flags;
|
||||
int sharpening_strength; /* -127 <--> 127, default 64 */
|
||||
};
|
||||
|
||||
struct mdp_blit_req_list {
|
||||
@@ -219,123 +90,4 @@ struct mdp_blit_req_list {
|
||||
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_*/
|
||||
#endif /* _MSM_MDP_H_ */
|
||||
|
||||
Executable
+241
@@ -0,0 +1,241 @@
|
||||
/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of Code Aurora nor
|
||||
* the names of its contributors may be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MSM_VDEC_H_
|
||||
#define _MSM_VDEC_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define VDEC_IOCTL_MAGIC 'v'
|
||||
|
||||
#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
|
||||
#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
|
||||
#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, \
|
||||
struct vdec_input_buf)
|
||||
#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
|
||||
#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
|
||||
#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6)
|
||||
#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
|
||||
#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
|
||||
#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
|
||||
#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, \
|
||||
struct vdec_dec_attributes)
|
||||
#define VDEC_IOCTL_GETVERSION _IOR(VDEC_IOCTL_MAGIC, 11, struct vdec_version)
|
||||
|
||||
enum {
|
||||
VDEC_FRAME_DECODE_OK,
|
||||
VDEC_FRAME_DECODE_ERR,
|
||||
VDEC_FATAL_ERR,
|
||||
VDEC_FLUSH_FINISH,
|
||||
VDEC_EOS,
|
||||
VDEC_FRAME_FLUSH,
|
||||
VDEC_STREAM_SWITCH,
|
||||
VDEC_SUSPEND_FINISH,
|
||||
VDEC_BUFFER_CONSUMED
|
||||
};
|
||||
|
||||
enum {
|
||||
VDEC_FLUSH_INPUT,
|
||||
VDEC_FLUSH_OUTPUT,
|
||||
VDEC_FLUSH_ALL
|
||||
};
|
||||
|
||||
enum {
|
||||
VDEC_BUFFER_TYPE_INPUT,
|
||||
VDEC_BUFFER_TYPE_OUTPUT,
|
||||
VDEC_BUFFER_TYPE_INTERNAL1,
|
||||
VDEC_BUFFER_TYPE_INTERNAL2,
|
||||
};
|
||||
|
||||
enum {
|
||||
VDEC_QUEUE_SUCCESS,
|
||||
VDEC_QUEUE_FAILED,
|
||||
VDEC_QUEUE_BADSTATE,
|
||||
};
|
||||
|
||||
enum {
|
||||
VDEC_COLOR_FORMAT_NV21 = 0x01,
|
||||
VDEC_COLOR_FORMAT_NV21_YAMOTO = 0x02
|
||||
};
|
||||
|
||||
struct vdec_input_buf_info {
|
||||
u32 offset;
|
||||
u32 data;
|
||||
u32 size;
|
||||
int timestamp_lo;
|
||||
int timestamp_hi;
|
||||
int avsync_state;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
struct vdec_buf_desc {
|
||||
u32 bufsize;
|
||||
u32 num_min_buffers;
|
||||
u32 num_max_buffers;
|
||||
};
|
||||
|
||||
struct vdec_buf_req {
|
||||
u32 max_input_queue_size;
|
||||
struct vdec_buf_desc input;
|
||||
struct vdec_buf_desc output;
|
||||
struct vdec_buf_desc dec_req1;
|
||||
struct vdec_buf_desc dec_req2;
|
||||
};
|
||||
|
||||
struct vdec_region_info {
|
||||
u32 src_id;
|
||||
u32 offset;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
struct vdec_config {
|
||||
u32 fourcc; /* video format */
|
||||
u32 width; /* source width */
|
||||
u32 height; /* source height */
|
||||
u32 order; /* render decoder order */
|
||||
u32 notify_enable; /* enable notify input buffer done event */
|
||||
u32 vc1_rowbase;
|
||||
u32 h264_startcode_detect;
|
||||
u32 h264_nal_len_size;
|
||||
u32 postproc_flag;
|
||||
u32 fruc_enable;
|
||||
u32 color_format; /* used to set YUV color format */
|
||||
};
|
||||
|
||||
struct vdec_vc1_panscan_regions {
|
||||
int num;
|
||||
int width[4];
|
||||
int height[4];
|
||||
int xoffset[4];
|
||||
int yoffset[4];
|
||||
};
|
||||
|
||||
struct vdec_cropping_window {
|
||||
u32 x1;
|
||||
u32 y1;
|
||||
u32 x2;
|
||||
u32 y2;
|
||||
};
|
||||
|
||||
struct vdec_frame_info {
|
||||
u32 status; /* video decode status */
|
||||
u32 offset; /* buffer offset */
|
||||
u32 data1; /* user data field 1 */
|
||||
u32 data2; /* user data field 2 */
|
||||
int timestamp_lo; /* lower 32 bits timestamp, in msec */
|
||||
int timestamp_hi; /* higher 32 bits timestamp, in msec */
|
||||
int cal_timestamp_lo; /* lower 32 bits cal timestamp, in msec */
|
||||
int cal_timestamp_hi; /* higher 32 bits cal timestamp, in msec */
|
||||
u32 dec_width; /* frame roi width */
|
||||
u32 dec_height; /* frame roi height */
|
||||
struct vdec_cropping_window cwin; /* The frame cropping window */
|
||||
u32 picture_type[2]; /* picture coding type */
|
||||
u32 picture_format; /* picture coding format */
|
||||
u32 vc1_rangeY; /* luma range mapping */
|
||||
u32 vc1_rangeUV; /* chroma range mapping */
|
||||
u32 picture_resolution; /* scaling factor */
|
||||
u32 frame_disp_repeat; /* how often repeated by disp */
|
||||
u32 repeat_first_field; /* repeat 1st field after 2nd */
|
||||
u32 top_field_first; /* top field displayed first */
|
||||
u32 interframe_interp; /* not for inter-frame interp */
|
||||
struct vdec_vc1_panscan_regions panscan; /* pan region */
|
||||
u32 concealed_macblk_num; /* number of concealed macro blk */
|
||||
u32 flags; /* input flags */
|
||||
u32 performance_stats; /* performance statistics returned by decoder */
|
||||
u32 data3; /* user data field 3 */
|
||||
};
|
||||
|
||||
struct vdec_buf_info {
|
||||
u32 buf_type;
|
||||
struct vdec_region_info region;
|
||||
u32 num_buf;
|
||||
u32 islast;
|
||||
};
|
||||
|
||||
struct vdec_buffer {
|
||||
u32 pmem_id;
|
||||
struct vdec_buf_info buf;
|
||||
};
|
||||
|
||||
struct vdec_sequence {
|
||||
u8 *header;
|
||||
u32 len;
|
||||
};
|
||||
|
||||
struct vdec_config_sps {
|
||||
struct vdec_config cfg;
|
||||
struct vdec_sequence seq;
|
||||
};
|
||||
|
||||
#define VDEC_MSG_REUSEINPUTBUFFER 1
|
||||
#define VDEC_MSG_FRAMEDONE 2
|
||||
|
||||
struct vdec_msg {
|
||||
u32 id;
|
||||
|
||||
union {
|
||||
/* id = VDEC_MSG_REUSEINPUTBUFFER */
|
||||
u32 buf_id;
|
||||
/* id = VDEC_MSG_FRAMEDONE */
|
||||
struct vdec_frame_info vfr_info;
|
||||
};
|
||||
};
|
||||
|
||||
struct vdec_init {
|
||||
struct vdec_config_sps sps_cfg;
|
||||
struct vdec_buf_req *buf_req;
|
||||
};
|
||||
|
||||
struct vdec_input_buf {
|
||||
u32 pmem_id;
|
||||
struct vdec_input_buf_info buffer;
|
||||
struct vdec_queue_status *queue_status;
|
||||
};
|
||||
|
||||
struct vdec_queue_status {
|
||||
u32 status;
|
||||
};
|
||||
|
||||
struct vdec_dec_attributes {
|
||||
u32 fourcc;
|
||||
u32 profile;
|
||||
u32 level;
|
||||
u32 dec_pic_width;
|
||||
u32 dec_pic_height;
|
||||
struct vdec_buf_desc input;
|
||||
struct vdec_buf_desc output;
|
||||
struct vdec_buf_desc dec_req1;
|
||||
struct vdec_buf_desc dec_req2;
|
||||
};
|
||||
|
||||
struct vdec_version {
|
||||
u32 major;
|
||||
u32 minor;
|
||||
};
|
||||
|
||||
#endif /* _MSM_VDEC_H_ */
|
||||
Executable
+331
@@ -0,0 +1,331 @@
|
||||
/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of Code Aurora nor
|
||||
* the names of its contributors may be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _MSM_VENC_H_
|
||||
#define _MSM_VENC_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define VENC_MAX_RECON_BUFFERS 2
|
||||
|
||||
#define VENC_FLAG_EOS 0x00000001
|
||||
#define VENC_FLAG_END_OF_FRAME 0x00000010
|
||||
#define VENC_FLAG_SYNC_FRAME 0x00000020
|
||||
#define VENC_FLAG_EXTRA_DATA 0x00000040
|
||||
#define VENC_FLAG_CODEC_CONFIG 0x00000080
|
||||
|
||||
enum venc_flush_type {
|
||||
VENC_FLUSH_INPUT,
|
||||
VENC_FLUSH_OUTPUT,
|
||||
VENC_FLUSH_ALL
|
||||
};
|
||||
|
||||
enum venc_state_type {
|
||||
VENC_STATE_PAUSE = 0x1,
|
||||
VENC_STATE_START = 0x2,
|
||||
VENC_STATE_STOP = 0x4
|
||||
};
|
||||
|
||||
enum venc_event_type_enum {
|
||||
VENC_EVENT_START_STATUS,
|
||||
VENC_EVENT_STOP_STATUS,
|
||||
VENC_EVENT_SUSPEND_STATUS,
|
||||
VENC_EVENT_RESUME_STATUS,
|
||||
VENC_EVENT_FLUSH_STATUS,
|
||||
VENC_EVENT_RELEASE_INPUT,
|
||||
VENC_EVENT_DELIVER_OUTPUT,
|
||||
VENC_EVENT_UNKNOWN_STATUS
|
||||
};
|
||||
|
||||
enum venc_status_code {
|
||||
VENC_STATUS_SUCCESS,
|
||||
VENC_STATUS_ERROR,
|
||||
VENC_STATUS_INVALID_STATE,
|
||||
VENC_STATUS_FLUSHING,
|
||||
VENC_STATUS_INVALID_PARAM,
|
||||
VENC_STATUS_CMD_QUEUE_FULL,
|
||||
VENC_STATUS_CRITICAL,
|
||||
VENC_STATUS_INSUFFICIENT_RESOURCES,
|
||||
VENC_STATUS_TIMEOUT
|
||||
};
|
||||
|
||||
enum venc_msg_code {
|
||||
VENC_MSG_INDICATION,
|
||||
VENC_MSG_INPUT_BUFFER_DONE,
|
||||
VENC_MSG_OUTPUT_BUFFER_DONE,
|
||||
VENC_MSG_NEED_OUTPUT_BUFFER,
|
||||
VENC_MSG_FLUSH,
|
||||
VENC_MSG_START,
|
||||
VENC_MSG_STOP,
|
||||
VENC_MSG_PAUSE,
|
||||
VENC_MSG_RESUME,
|
||||
VENC_MSG_STOP_READING_MSG
|
||||
};
|
||||
|
||||
enum venc_error_code {
|
||||
VENC_S_SUCCESS,
|
||||
VENC_S_EFAIL,
|
||||
VENC_S_EFATAL,
|
||||
VENC_S_EBADPARAM,
|
||||
VENC_S_EINVALSTATE,
|
||||
VENC_S_ENOSWRES,
|
||||
VENC_S_ENOHWRES,
|
||||
VENC_S_EBUFFREQ,
|
||||
VENC_S_EINVALCMD,
|
||||
VENC_S_ETIMEOUT,
|
||||
VENC_S_ENOREATMPT,
|
||||
VENC_S_ENOPREREQ,
|
||||
VENC_S_ECMDQFULL,
|
||||
VENC_S_ENOTSUPP,
|
||||
VENC_S_ENOTIMPL,
|
||||
VENC_S_ENOTPMEM,
|
||||
VENC_S_EFLUSHED,
|
||||
VENC_S_EINSUFBUF,
|
||||
VENC_S_ESAMESTATE,
|
||||
VENC_S_EINVALTRANS
|
||||
};
|
||||
|
||||
enum venc_mem_region_enum {
|
||||
VENC_PMEM_EBI1,
|
||||
VENC_PMEM_SMI
|
||||
};
|
||||
|
||||
struct venc_buf_type {
|
||||
unsigned int region;
|
||||
unsigned int phys;
|
||||
unsigned int size;
|
||||
int offset;
|
||||
};
|
||||
|
||||
struct venc_qp_range {
|
||||
unsigned int min_qp;
|
||||
unsigned int max_qp;
|
||||
};
|
||||
|
||||
struct venc_frame_rate {
|
||||
unsigned int frame_rate_num;
|
||||
unsigned int frame_rate_den;
|
||||
};
|
||||
|
||||
struct venc_slice_info {
|
||||
unsigned int slice_mode;
|
||||
unsigned int 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;
|
||||
};
|
||||
|
||||
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;
|
||||
struct venc_frame_rate frame_rate;
|
||||
unsigned int bitrate;
|
||||
struct venc_qp_range qp_range;
|
||||
unsigned int iframe_qp;
|
||||
unsigned int pframe_qp;
|
||||
struct venc_slice_info slice_config;
|
||||
struct venc_extra_data extra_data;
|
||||
};
|
||||
|
||||
struct venc_nonio_buf_config {
|
||||
struct venc_buf_type recon_buf1;
|
||||
struct venc_buf_type recon_buf2;
|
||||
struct venc_buf_type wb_buf;
|
||||
struct venc_buf_type cmd_buf;
|
||||
struct venc_buf_type vlc_buf;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
struct venc_h263_config {
|
||||
unsigned int profile;
|
||||
unsigned int level;
|
||||
};
|
||||
|
||||
struct venc_h264_config {
|
||||
unsigned int profile;
|
||||
unsigned int level;
|
||||
unsigned int max_nal;
|
||||
unsigned int idr_period;
|
||||
};
|
||||
|
||||
struct venc_pmem {
|
||||
int src;
|
||||
int fd;
|
||||
unsigned int offset;
|
||||
void *virt;
|
||||
void *phys;
|
||||
unsigned int size;
|
||||
};
|
||||
|
||||
struct venc_buffer {
|
||||
unsigned char *ptr_buffer;
|
||||
unsigned int size;
|
||||
unsigned int len;
|
||||
unsigned int offset;
|
||||
long long time_stamp;
|
||||
unsigned int flags;
|
||||
unsigned int client_data;
|
||||
|
||||
};
|
||||
|
||||
struct venc_buffers {
|
||||
struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
|
||||
struct venc_pmem wb_buf;
|
||||
struct venc_pmem cmd_buf;
|
||||
struct venc_pmem vlc_buf;
|
||||
};
|
||||
|
||||
struct venc_buffer_flush {
|
||||
unsigned int flush_mode;
|
||||
};
|
||||
|
||||
union venc_msg_data {
|
||||
struct venc_buffer buf;
|
||||
struct venc_buffer_flush flush_ret;
|
||||
|
||||
};
|
||||
|
||||
struct venc_msg {
|
||||
unsigned int status_code;
|
||||
unsigned int msg_code;
|
||||
union venc_msg_data msg_data;
|
||||
unsigned int msg_data_size;
|
||||
};
|
||||
|
||||
union venc_codec_config {
|
||||
struct venc_mpeg4_config mpeg4_params;
|
||||
struct venc_h263_config h263_params;
|
||||
struct venc_h264_config h264_params;
|
||||
};
|
||||
|
||||
struct venc_q6_config {
|
||||
struct venc_common_config config_params;
|
||||
union venc_codec_config codec_params;
|
||||
struct venc_nonio_buf_config buf_params;
|
||||
void *callback_event;
|
||||
};
|
||||
|
||||
struct venc_hdr_config {
|
||||
struct venc_common_config config_params;
|
||||
union venc_codec_config codec_params;
|
||||
};
|
||||
|
||||
struct venc_init_config {
|
||||
struct venc_q6_config q6_config;
|
||||
struct venc_buffers q6_bufs;
|
||||
};
|
||||
|
||||
struct venc_seq_config {
|
||||
int size;
|
||||
struct venc_pmem buf;
|
||||
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)
|
||||
|
||||
#define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
|
||||
|
||||
#define VENC_IOCTL_SET_INPUT_BUFFER \
|
||||
_IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
|
||||
|
||||
#define VENC_IOCTL_SET_OUTPUT_BUFFER \
|
||||
_IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
|
||||
|
||||
#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
|
||||
|
||||
#define VENC_IOCTL_CMD_ENCODE_FRAME \
|
||||
_IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
|
||||
|
||||
#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER \
|
||||
_IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
|
||||
|
||||
#define VENC_IOCTL_CMD_FLUSH \
|
||||
_IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
|
||||
|
||||
#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
|
||||
|
||||
#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
|
||||
|
||||
#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
|
||||
|
||||
#define VENC_IOCTL_SET_INTRA_PERIOD \
|
||||
_IOW(VENC_IOCTL_MAGIC, 12, int)
|
||||
|
||||
#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
|
||||
|
||||
#define VENC_IOCTL_GET_SEQUENCE_HDR \
|
||||
_IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
|
||||
|
||||
#define VENC_IOCTL_SET_INTRA_REFRESH \
|
||||
_IOW(VENC_IOCTL_MAGIC, 15, int)
|
||||
|
||||
#define VENC_IOCTL_SET_FRAME_RATE \
|
||||
_IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
|
||||
|
||||
#define VENC_IOCTL_SET_TARGET_BITRATE \
|
||||
_IOW(VENC_IOCTL_MAGIC, 17, int)
|
||||
|
||||
#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
|
||||
@@ -1,80 +0,0 @@
|
||||
/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of Code Aurora Forum, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __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)
|
||||
|
||||
enum rotator_clk_type {
|
||||
ROTATOR_AXICLK_CLK,
|
||||
ROTATOR_PCLK_CLK,
|
||||
ROTATOR_IMEMCLK_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;
|
||||
};
|
||||
|
||||
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
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __SPI_AIC3254_H__
|
||||
#define __SPI_AIC3254_H__
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
typedef struct _CODEC_SPI_CMD {
|
||||
unsigned char act;
|
||||
unsigned char reg;
|
||||
unsigned char data;
|
||||
} CODEC_SPI_CMD;
|
||||
|
||||
typedef struct _CODEC_SPI_CMD_PARAM {
|
||||
CODEC_SPI_CMD *data;
|
||||
unsigned int len;
|
||||
} CODEC_SPI_CMD_PARAM;
|
||||
|
||||
struct AIC3254_PARAM {
|
||||
unsigned int row_num;
|
||||
unsigned int col_num;
|
||||
void *cmd_data;
|
||||
};
|
||||
|
||||
struct CODEC_CFG {
|
||||
unsigned char tb_idx;
|
||||
unsigned char index;
|
||||
};
|
||||
|
||||
#define AIC3254_IOCTL_MAGIC 's'
|
||||
#define AIC3254_SET_TX_PARAM _IOW(AIC3254_IOCTL_MAGIC, 0x10, unsigned)
|
||||
#define AIC3254_SET_RX_PARAM _IOW(AIC3254_IOCTL_MAGIC, 0x11, unsigned)
|
||||
#define AIC3254_CONFIG_TX _IOW(AIC3254_IOCTL_MAGIC, 0x12, unsigned int)
|
||||
#define AIC3254_CONFIG_RX _IOW(AIC3254_IOCTL_MAGIC, 0x13, unsigned int)
|
||||
#define AIC3254_SET_DSP_PARAM _IOW(AIC3254_IOCTL_MAGIC, 0x20, unsigned)
|
||||
#define AIC3254_CONFIG_MEDIA _IOW(AIC3254_IOCTL_MAGIC, 0x21, unsigned int)
|
||||
#define AIC3254_CONFIG_VOICE _IOW(AIC3254_IOCTL_MAGIC, 0x22, unsigned int)
|
||||
#define AIC3254_CONFIG_VOLUME_L _IOW(AIC3254_IOCTL_MAGIC, 0x23, unsigned int)
|
||||
#define AIC3254_CONFIG_VOLUME_R _IOW(AIC3254_IOCTL_MAGIC, 0x24, unsigned int)
|
||||
#define AIC3254_POWERDOWN _IOW(AIC3254_IOCTL_MAGIC, 0x25, unsigned int)
|
||||
#define AIC3254_LOOPBACK _IOW(AIC3254_IOCTL_MAGIC, 0x26, unsigned int)
|
||||
#define AIC3254_DUMP_PAGES _IOW(AIC3254_IOCTL_MAGIC, 0x30, unsigned int)
|
||||
#define AIC3254_READ_REG _IOWR(AIC3254_IOCTL_MAGIC, 0x31, unsigned)
|
||||
#define AIC3254_WRITE_REG _IOW(AIC3254_IOCTL_MAGIC, 0x32, unsigned)
|
||||
#define AIC3254_RESET _IOW(AIC3254_IOCTL_MAGIC, 0x33, unsigned int)
|
||||
|
||||
#define AIC3254_MAX_PAGES 255
|
||||
#define AIC3254_MAX_REGS 128
|
||||
#define AIC3254_MAX_RETRY 10
|
||||
|
||||
#define IO_CTL_ROW_MAX 64
|
||||
#define IO_CTL_COL_MAX 1024
|
||||
#define MINIDSP_ROW_MAX 32
|
||||
#define MINIDSP_COL_MAX 16384
|
||||
|
||||
enum aic3254_uplink_mode {
|
||||
INITIAL = 0,
|
||||
CALL_UPLINK_IMIC_RECEIVER = 1,
|
||||
CALL_UPLINK_EMIC_HEADSET,
|
||||
CALL_UPLINK_IMIC_HEADSET,
|
||||
CALL_UPLINK_IMIC_SPEAKER,
|
||||
CALL_UPLINK_IMIC_RECEIVER_DUALMIC,
|
||||
CALL_UPLINK_EMIC_HEADSET_DUALMIC,
|
||||
CALL_UPLINK_IMIC_SPEAKER_DUALMIC,
|
||||
CALL_UPLINK_IMIC_RECIVER_TESTSIM,
|
||||
CALL_UPLINK_EMIC_HEADSET_TESTSIM,
|
||||
CALL_UPLINK_IMIC_SPEAKER_TESTSIM,
|
||||
VOICERECORD_IMIC = 15,
|
||||
VOICERECORD_EMIC,
|
||||
VIDEORECORD_IMIC,
|
||||
VIDEORECORD_EMIC,
|
||||
VOICERECOGNITION_IMIC,
|
||||
VOICERECOGNITION_EMIC,
|
||||
FM_IN_SPEAKER,
|
||||
FM_IN_HEADSET,
|
||||
TTY_IN_HCO,
|
||||
TTY_IN_VCO,
|
||||
TTY_IN_FULL,
|
||||
UPLINK_OFF = 29,
|
||||
UPLINK_WAKEUP,
|
||||
POWER_OFF,
|
||||
SLEEP_WITH_HP_IN,
|
||||
VOICERECORD_IMIC_PLAYBACK_SPEAKER,
|
||||
VOICERECORD_EMIC_PLAYBACK_HEADSET,
|
||||
VOICERECORD_IMIC_PLAYBACK_HEADSET,
|
||||
};
|
||||
|
||||
enum aic3254_downlink_mode {
|
||||
CALL_DOWNLINK_IMIC_RECEIVER = 1,
|
||||
CALL_DOWNLINK_EMIC_HEADSET,
|
||||
CALL_DOWNLINK_IMIC_HEADSET,
|
||||
CALL_DOWNLINK_IMIC_SPEAKER,
|
||||
CALL_DOWNLINK_IMIC_RECEIVER_DUALMIC,
|
||||
CALL_DOWNLINK_EMIC_HEADSET_DUALMIC,
|
||||
CALL_DOWNLINK_IMIC_SPEAKER_DUALMIC,
|
||||
CALL_DOWNLINK_IMIC_RECIVER_TESTSIM,
|
||||
CALL_DOWNLINK_EMIC_HEADSET_TESTSIM,
|
||||
CALL_DOWNLINK_IMIC_SPEAKER_TESTSIM,
|
||||
PLAYBACK_RECEIVER,
|
||||
PLAYBACK_HEADSET,
|
||||
PLAYBACK_SPEAKER = 13,
|
||||
RING_HEADSET_SPEAKER,
|
||||
PLAYBACK_SPEAKER_ALT,
|
||||
USB_AUDIO,
|
||||
FM_OUT_SPEAKER = 21,
|
||||
FM_OUT_HEADSET,
|
||||
TTY_OUT_HCO,
|
||||
TTY_OUT_VCO,
|
||||
TTY_OUT_FULL,
|
||||
MUSE,
|
||||
HAC,
|
||||
LPM_IMIC_RECEIVER,
|
||||
DOWNLINK_OFF = 29,
|
||||
DOWNLINK_WAKEUP,
|
||||
};
|
||||
|
||||
struct aic3254_ctl_ops {
|
||||
void (*tx_amp_enable)(int en);
|
||||
void (*rx_amp_enable)(int en);
|
||||
int (*panel_sleep_in)(void);
|
||||
void (*reset_3254)(void);
|
||||
void (*spibus_enable)(int en);
|
||||
CODEC_SPI_CMD_PARAM *downlink_off;
|
||||
CODEC_SPI_CMD_PARAM *uplink_off;
|
||||
CODEC_SPI_CMD_PARAM *downlink_on;
|
||||
CODEC_SPI_CMD_PARAM *uplink_on;
|
||||
CODEC_SPI_CMD_PARAM *lb_dsp_init;
|
||||
CODEC_SPI_CMD_PARAM *lb_downlink_receiver;
|
||||
CODEC_SPI_CMD_PARAM *lb_downlink_speaker;
|
||||
CODEC_SPI_CMD_PARAM *lb_downlink_headset;
|
||||
CODEC_SPI_CMD_PARAM *lb_uplink_imic;
|
||||
CODEC_SPI_CMD_PARAM *lb_uplink_emic;
|
||||
CODEC_SPI_CMD_PARAM *lb_receiver_imic;
|
||||
CODEC_SPI_CMD_PARAM *lb_speaker_imic;
|
||||
CODEC_SPI_CMD_PARAM *lb_headset_emic;
|
||||
CODEC_SPI_CMD_PARAM *lb_receiver_bmic;
|
||||
CODEC_SPI_CMD_PARAM *lb_speaker_bmic;
|
||||
CODEC_SPI_CMD_PARAM *lb_headset_bmic;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef TPA2051D3_H
|
||||
#define TPA2051D3_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define TPA2051D3_I2C_NAME "tpa2051d3"
|
||||
#define SPKR_OUTPUT 0
|
||||
#define HEADSET_OUTPUT 1
|
||||
#define DUAL_OUTPUT 2
|
||||
#define HANDSET_OUTPUT 3
|
||||
#define MODE_CMD_LEM 9
|
||||
struct tpa2051d3_platform_data {
|
||||
uint32_t gpio_tpa2051_spk_en;
|
||||
};
|
||||
|
||||
struct tpa2051_config_data {
|
||||
unsigned int data_len;
|
||||
unsigned int mode_num;
|
||||
unsigned char *cmd_data;
|
||||
};
|
||||
|
||||
enum TPA2051_Mode {
|
||||
TPA2051_MODE_OFF,
|
||||
TPA2051_MODE_PLAYBACK_SPKR,
|
||||
TPA2051_MODE_PLAYBACK_HEADSET,
|
||||
TPA2051_MODE_RING,
|
||||
TPA2051_MODE_VOICECALL_SPKR,
|
||||
TPA2051_MODE_VOICECALL_HEADSET,
|
||||
TPA2051_MODE_FM_SPKR,
|
||||
TPA2051_MODE_FM_HEADSET,
|
||||
TPA2051_MODE_HANDSET,
|
||||
TPA2051_MAX_MODE
|
||||
};
|
||||
#define TPA2051_IOCTL_MAGIC 'a'
|
||||
#define TPA2051_SET_CONFIG _IOW(TPA2051_IOCTL_MAGIC, 0x01, unsigned)
|
||||
#define TPA2051_READ_CONFIG _IOW(TPA2051_IOCTL_MAGIC, 0x02, unsigned)
|
||||
#define TPA2051_SET_MODE _IOW(TPA2051_IOCTL_MAGIC, 0x03, unsigned)
|
||||
#define TPA2051_SET_PARAM _IOW(TPA2051_IOCTL_MAGIC, 0x04, unsigned)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -14,14 +14,6 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# This is the product configuration for a generic GSM leo,
|
||||
# not specialized for any geography.
|
||||
#
|
||||
|
||||
|
||||
## (1) First, the most specific values, i.e. the aspects that are specific to GSM
|
||||
|
||||
PRODUCT_COPY_FILES += \
|
||||
device/htc/leo/prebuilt/init.htcleo.rc:root/init.htcleo.rc \
|
||||
device/htc/leo/prebuilt/init.htcleo.usb.rc:root/init.htcleo.usb.rc \
|
||||
@@ -38,8 +30,44 @@ PRODUCT_TAGS += dalvik.gc.type-precise
|
||||
## (2) Also get non-open-source GSM-specific aspects if available
|
||||
$(call inherit-product-if-exists, vendor/htc/leo/leo-vendor.mk)
|
||||
|
||||
|
||||
DEVICE_PACKAGE_OVERLAYS += device/htc/leo/overlay
|
||||
PRODUCT_LOCALES := en
|
||||
|
||||
# General properties
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.sf.lcd_density=240 \
|
||||
rild.libpath=/system/lib/libhtc_ril.so \
|
||||
ro.ril.ecc.HTC-ELL=92,93,94 \
|
||||
ro.ril.ecc.HTC-WWE=999 \
|
||||
ro.ril.enable.a52.HTC-ITA=1 \
|
||||
ro.ril.enable.a53.HTC-ITA=1 \
|
||||
ro.ril.enable.a52=0 \
|
||||
ro.ril.enable.a53=1 \
|
||||
ro.ril.enable.dtm=1 \
|
||||
ro.ril.gprsclass=12 \
|
||||
ro.ril.hsdpa.category=8 \
|
||||
ro.ril.hsupa.category=5 \
|
||||
ro.ril.hsxpa=2 \
|
||||
ro.ril.def.agps.mode=2 \
|
||||
ro.ril.enable.managed.roaming=1 \
|
||||
ro.ril.oem.nosim.ecclist=911,112,999,000,08,118,120,122,110,119,995 \
|
||||
ro.ril.emc.mode=2
|
||||
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
media.a1026.nsForVoiceRec=0 \
|
||||
media.a1026.enableA1026=1 \
|
||||
ro.media.dec.jpeg.memcap=20000000 \
|
||||
ro.opengles.version=131072
|
||||
|
||||
# Reduce wifi scan. Better batery life
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.ril.disable.power.collapse=0 \
|
||||
wifi.supplicant_scan_interval=180
|
||||
|
||||
# Fix black screen after call
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.lge.proximity.delay=10 \
|
||||
mot.proximity.delay=10
|
||||
|
||||
PRODUCT_COPY_FILES += \
|
||||
frameworks/base/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \
|
||||
@@ -82,7 +110,11 @@ PRODUCT_PACKAGES += \
|
||||
copybit.qsd8k \
|
||||
gralloc.qsd8k \
|
||||
hwcomposer.default \
|
||||
hwcomposer.qsd8k
|
||||
hwcomposer.qsd8k \
|
||||
libgenlock \
|
||||
libmemalloc \
|
||||
libtilerenderer \
|
||||
libQcomUI
|
||||
|
||||
# Omx
|
||||
PRODUCT_PACKAGES += \
|
||||
@@ -94,16 +126,57 @@ PRODUCT_PACKAGES += \
|
||||
# htcleo misc
|
||||
PRODUCT_PACKAGES += \
|
||||
camera.qsd8k \
|
||||
librs_jni \
|
||||
leo-reference-ril \
|
||||
libgps \
|
||||
com.android.future.usb.accessory \
|
||||
libhtc_ril_wrapper
|
||||
|
||||
# Omx cli test apps
|
||||
PRODUCT_PACKAGES := \
|
||||
libmm-omxcore \
|
||||
mm-vdec-omx-test \
|
||||
liblasic \
|
||||
ast-mm-vdec-omx-test \
|
||||
mm-venc-omx-test
|
||||
|
||||
PRODUCT_PACKAGES += \
|
||||
Stk \
|
||||
Camera \
|
||||
Launcher2
|
||||
|
||||
# strict mode
|
||||
ADDITIONAL_DEFAULT_PROPERTIES += persist.sys.strictmode.disable=true
|
||||
|
||||
# leo uses high-density artwork where available
|
||||
PRODUCT_AAPT_CONFIG := normal hdpi
|
||||
PRODUCT_AAPT_PREF_CONFIG := hdpi
|
||||
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
debug.sf.hw=1 \
|
||||
debug.composition.type=mdp \
|
||||
dalvik.vm.dexopt-flags=m=y \
|
||||
dalvik.vm.checkjni=false \
|
||||
dalvik.vm.heapsize=128m \
|
||||
dalvik.vm.heapgrowthlimit=48m \
|
||||
dalvik.vm.heapstartsize=5m \
|
||||
windowsmgr.max_events_per_sec=120
|
||||
|
||||
# HardwareRenderer properties
|
||||
# dirty_regions: "false" to disable partial invalidates, override if enabletr=true
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
hwui.render_dirty_regions=false \
|
||||
hwui.disable_vsync=true \
|
||||
hwui.print_config=choice \
|
||||
debug.enabletr=false
|
||||
|
||||
# Force 2 buffers - gralloc defaults to 3 and we only have 2
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
debug.gr.numframebuffers=2
|
||||
|
||||
# disable jni check
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.kernel.android.checkjni=0 \
|
||||
dalvik.vm.checkjni=0
|
||||
|
||||
PRODUCT_COPY_FILES += \
|
||||
device/htc/leo/prebuilt/vold.fstab:system/etc/vold.fstab
|
||||
|
||||
@@ -136,7 +209,7 @@ PRODUCT_COPY_FILES += $(shell \
|
||||
|
||||
# kernel
|
||||
PRODUCT_COPY_FILES += \
|
||||
device/htc/leo/prebuilt/kernel:boot/zImage \
|
||||
device/htc/leo/prebuilt/kernel:kernel
|
||||
|
||||
ifeq ($(TARGET_PREBUILT_KERNEL),)
|
||||
LOCAL_KERNEL := device/htc/leo/prebuilt/kernel
|
||||
@@ -151,8 +224,6 @@ PRODUCT_COPY_FILES += \
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_KERNEL):kernel
|
||||
|
||||
# media profiles and capabilities spec
|
||||
$(call inherit-product, device/htc/leo/prebuilt/media_a1026.mk)
|
||||
|
||||
# stuff common to all HTC phones
|
||||
$(call inherit-product, device/htc/common/common.mk)
|
||||
|
||||
+70
-63
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
* Copyright (C) 2012 milaq
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -44,9 +45,6 @@ static char const*const GREEN_LED_FILE
|
||||
static char const*const AMBER_LED_FILE
|
||||
= "/sys/class/leds/amber/brightness";
|
||||
|
||||
static char const*const RED_LED_FILE
|
||||
= "/sys/class/leds/red/brightness";
|
||||
|
||||
static char const*const LCD_FILE
|
||||
= "/sys/class/leds/lcd-backlight/brightness";
|
||||
|
||||
@@ -56,13 +54,16 @@ static char const*const AMBER_BLINK_FILE
|
||||
static char const*const GREEN_BLINK_FILE
|
||||
= "/sys/class/leds/green/blink";
|
||||
|
||||
static char const*const RED_BLINK_FILE
|
||||
= "/sys/class/leds/red/blink";
|
||||
|
||||
|
||||
static char const*const BUTTON_FILE
|
||||
= "/sys/class/leds/button-backlight/brightness";
|
||||
|
||||
enum {
|
||||
LED_AMBER,
|
||||
LED_GREEN,
|
||||
LED_BLUE,
|
||||
LED_BLANK,
|
||||
};
|
||||
|
||||
/**
|
||||
* device methods
|
||||
@@ -128,69 +129,75 @@ set_light_buttons(struct light_device_t* dev,
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
static void
|
||||
set_speaker_light_locked(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
{
|
||||
int len;
|
||||
int alpha, red, green, blue;
|
||||
int blink, freq, pwm;
|
||||
int onMS, offMS;
|
||||
unsigned int colorRGB;
|
||||
unsigned int colorRGB = state->color & 0xFFFFFF;
|
||||
unsigned int color = LED_BLANK;
|
||||
|
||||
switch (state->flashMode) {
|
||||
case LIGHT_FLASH_TIMED:
|
||||
blink = 1;
|
||||
onMS = state->flashOnMS;
|
||||
offMS = state->flashOffMS;
|
||||
break;
|
||||
case LIGHT_FLASH_HARDWARE:
|
||||
blink = 1;
|
||||
onMS = state->flashOnMS;
|
||||
offMS = state->flashOffMS;
|
||||
break;
|
||||
case LIGHT_FLASH_NONE:
|
||||
blink = 0;
|
||||
onMS = 0;
|
||||
offMS = 0;
|
||||
break;
|
||||
default:
|
||||
blink = 1;
|
||||
onMS = 0;
|
||||
offMS = 0;
|
||||
break;
|
||||
}
|
||||
if (colorRGB & 0xFF)
|
||||
color = LED_BLUE;
|
||||
if ((colorRGB >> 8)&0xFF)
|
||||
color = LED_GREEN;
|
||||
if ((colorRGB >> 16)&0xFF)
|
||||
color = LED_AMBER;
|
||||
|
||||
colorRGB = state->color;
|
||||
int amber = (colorRGB >> 16)&0xFF;
|
||||
int green = (colorRGB >> 8)&0xFF;
|
||||
int blue = (colorRGB)&0xFF;
|
||||
|
||||
#if 0
|
||||
LOGD("set_speaker_light_locked colorRGB=%08X, onMS=%d, offMS=%d\n",
|
||||
colorRGB, onMS, offMS);
|
||||
#endif
|
||||
switch (state->flashMode) {
|
||||
case LIGHT_FLASH_TIMED:
|
||||
switch (color) {
|
||||
case LED_AMBER:
|
||||
write_int (AMBER_BLINK_FILE, 2);
|
||||
write_int (GREEN_LED_FILE, 0);
|
||||
break;
|
||||
case LED_GREEN:
|
||||
write_int (GREEN_BLINK_FILE, 3);
|
||||
write_int (AMBER_LED_FILE, 0);
|
||||
break;
|
||||
case LED_BLUE:
|
||||
write_int (GREEN_BLINK_FILE, 3);
|
||||
write_int (AMBER_LED_FILE, 0);
|
||||
break;
|
||||
case LED_BLANK:
|
||||
write_int (AMBER_BLINK_FILE, 0);
|
||||
write_int (GREEN_BLINK_FILE, 0);
|
||||
break;
|
||||
default:
|
||||
LOGE("set_led_state colorRGB=%08X, unknown color\n",
|
||||
colorRGB);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case LIGHT_FLASH_NONE:
|
||||
switch (color) {
|
||||
case LED_AMBER:
|
||||
write_int (AMBER_LED_FILE, 1);
|
||||
write_int (GREEN_LED_FILE, 0);
|
||||
break;
|
||||
case LED_GREEN:
|
||||
write_int (AMBER_LED_FILE, 0);
|
||||
write_int (GREEN_LED_FILE, 1);
|
||||
break;
|
||||
case LED_BLUE:
|
||||
write_int (AMBER_LED_FILE, 0);
|
||||
write_int (GREEN_LED_FILE, 1);
|
||||
break;
|
||||
case LED_BLANK:
|
||||
write_int (AMBER_LED_FILE, 0);
|
||||
write_int (GREEN_LED_FILE, 0);
|
||||
break;
|
||||
|
||||
red = (colorRGB >> 16) & 0xFF;
|
||||
green = (colorRGB >> 8) & 0xFF;
|
||||
blue = colorRGB & 0xFF;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOGE("set_led_state colorRGB=%08X, unknown mode %d\n",
|
||||
colorRGB, state->flashMode);
|
||||
}
|
||||
|
||||
if (red) {
|
||||
write_int(GREEN_LED_FILE, 0);
|
||||
write_int(AMBER_LED_FILE, 1);
|
||||
if (blink) {
|
||||
//blink must come after brightness change
|
||||
write_int(AMBER_BLINK_FILE, 1);
|
||||
}
|
||||
} else if (green || blue) {
|
||||
write_int(AMBER_LED_FILE, 0);
|
||||
write_int(GREEN_LED_FILE, 1);
|
||||
if (blink) {
|
||||
write_int(GREEN_BLINK_FILE, 1);
|
||||
}
|
||||
} else {
|
||||
write_int(GREEN_LED_FILE, 0);
|
||||
write_int(AMBER_LED_FILE, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -292,7 +299,7 @@ const struct hw_module_t HAL_MODULE_INFO_SYM = {
|
||||
.version_major = 1,
|
||||
.version_minor = 0,
|
||||
.id = LIGHTS_HARDWARE_MODULE_ID,
|
||||
.name = "QCT MSM7K lights Module",
|
||||
.author = "Google, Inc.",
|
||||
.name = "HTC leo lights module",
|
||||
.author = "Micha LaQua",
|
||||
.methods = &lights_module_methods,
|
||||
};
|
||||
|
||||
@@ -26,4 +26,9 @@
|
||||
<!-- Default for UI touch sounds enabled -->
|
||||
<fraction name="def_window_animation_scale">50%</fraction>
|
||||
<fraction name="def_window_transition_scale">50%</fraction>
|
||||
|
||||
<integer name="def_screen_off_timeout">60000</integer>
|
||||
<bool name="def_install_non_market_apps">true</bool>
|
||||
|
||||
<string name="def_backup_transport">com.google.android.backup/.BackupTransportService</string>
|
||||
</resources>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user