merge from bravo base (not yet ready)
This commit is contained in:
parent
7044b6c96f
commit
cd9dd3a992
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
23
cm.mk
23
cm.mk
@ -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
|
||||
|
||||
|
@ -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 */
|
28
include/linux/android_pmem.h
Normal file → Executable file
28
include/linux/android_pmem.h
Normal file → Executable file
@ -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
|
0
include/linux/genlock.h
Normal file → Executable file
0
include/linux/genlock.h
Normal file → Executable file
@ -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
|
||||
|
104
include/linux/msm_kgsl.h
Normal file → Executable file
104
include/linux/msm_kgsl.h
Normal file → Executable file
@ -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,
|
||||
|
308
include/linux/msm_mdp.h
Normal file → Executable file
308
include/linux/msm_mdp.h
Normal file → Executable file
@ -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_ */
|
||||
|
241
include/linux/msm_q6vdec.h
Executable file
241
include/linux/msm_q6vdec.h
Executable file
@ -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_ */
|
331
include/linux/msm_q6venc.h
Executable file
331
include/linux/msm_q6venc.h
Executable file
@ -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
|
||||
|
101
leo.mk
101
leo.mk
@ -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)
|
||||
|
@ -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.
BIN
prebuilt/kernel
BIN
prebuilt/kernel
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
prebuilt/modules/reiserfs.ko
Executable file
BIN
prebuilt/modules/reiserfs.ko
Executable file
Binary file not shown.
Binary file not shown.
BIN
prebuilt/modules/zram.ko
Executable file
BIN
prebuilt/modules/zram.ko
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user