diff --git a/Android.mk b/Android.mk index 7138ec2..7835fcf 100644 --- a/Android.mk +++ b/Android.mk @@ -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 diff --git a/BoardConfig.mk b/BoardConfig.mk index b40a620..debb480 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -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 + + + + + + diff --git a/cm.mk b/cm.mk index 3d18855..1735794 100644 --- a/cm.mk +++ b/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 - diff --git a/full_leo.mk b/full_leo.mk index 792e5ef..b58be45 100644 --- a/full_leo.mk +++ b/full_leo.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 diff --git a/include/hardware/fb.h b/include/hardware/fb.h deleted file mode 100644 index 89189c8..0000000 --- a/include/hardware/fb.h +++ /dev/null @@ -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 -#include -#include - -#include - -#include - -__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 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 diff --git a/include/hardware/hwcomposer.h b/include/hardware/hwcomposer.h deleted file mode 100644 index 8afbd65..0000000 --- a/include/hardware/hwcomposer.h +++ /dev/null @@ -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 -#include - -#include -#include -#include - -__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 */ diff --git a/include/linux/android_pmem.h b/include/linux/android_pmem.h old mode 100644 new mode 100755 index c029196..0d1e3e0 --- a/include/linux/android_pmem.h +++ b/include/linux/android_pmem.h @@ -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, diff --git a/include/linux/ashmem.h b/include/linux/ashmem.h deleted file mode 100644 index 9da52a5..0000000 --- a/include/linux/ashmem.h +++ /dev/null @@ -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 -#include - -#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 diff --git a/include/linux/genlock.h b/include/linux/genlock.h old mode 100644 new mode 100755 diff --git a/include/linux/ion.h b/include/linux/ion.h deleted file mode 100644 index 7de40d4..0000000 --- a/include/linux/ion.h +++ /dev/null @@ -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 -#include - - -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 -#include -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 */ diff --git a/include/linux/msm_audio_7x30.h b/include/linux/msm_audio_7x30.h deleted file mode 100644 index 6185a6c..0000000 --- a/include/linux/msm_audio_7x30.h +++ /dev/null @@ -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 -#include -#include - -/* 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 diff --git a/include/linux/msm_audio_aac.h b/include/linux/msm_audio_aac.h deleted file mode 100644 index d9d300f..0000000 --- a/include/linux/msm_audio_aac.h +++ /dev/null @@ -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 - -#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 - diff --git a/include/linux/msm_kgsl.h b/include/linux/msm_kgsl.h old mode 100644 new mode 100755 index 1f898b0..9af0605 --- a/include/linux/msm_kgsl.h +++ b/include/linux/msm_kgsl.h @@ -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, diff --git a/include/linux/msm_mdp.h b/include/linux/msm_mdp.h old mode 100644 new mode 100755 index 5c67471..a933fac --- a/include/linux/msm_mdp.h +++ b/include/linux/msm_mdp.h @@ -15,90 +15,25 @@ #define _MSM_MDP_H_ #include -#include #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_ */ diff --git a/include/linux/msm_q6vdec.h b/include/linux/msm_q6vdec.h new file mode 100755 index 0000000..ed7cf78 --- /dev/null +++ b/include/linux/msm_q6vdec.h @@ -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 + +#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_ */ diff --git a/include/linux/msm_q6venc.h b/include/linux/msm_q6venc.h new file mode 100755 index 0000000..097e2db --- /dev/null +++ b/include/linux/msm_q6venc.h @@ -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 + +#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 diff --git a/include/linux/msm_rotator.h b/include/linux/msm_rotator.h deleted file mode 100644 index 2552ffc..0000000 --- a/include/linux/msm_rotator.h +++ /dev/null @@ -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 -#include - -#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 - diff --git a/include/linux/spi_aic3254.h b/include/linux/spi_aic3254.h deleted file mode 100644 index 392d7ae..0000000 --- a/include/linux/spi_aic3254.h +++ /dev/null @@ -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 - -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 - diff --git a/include/linux/tpa2051d3.h b/include/linux/tpa2051d3.h deleted file mode 100644 index 446db99..0000000 --- a/include/linux/tpa2051d3.h +++ /dev/null @@ -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 - -#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 - diff --git a/leo.mk b/leo.mk index 49661b7..983957c 100644 --- a/leo.mk +++ b/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) diff --git a/liblights/lights.c b/liblights/lights.c index dbb659b..1e54a01 100644 --- a/liblights/lights.c +++ b/liblights/lights.c @@ -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, }; diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml index fd18b3f..2da3112 100644 --- a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml +++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -26,4 +26,9 @@ 50% 50% + + 60000 + true + + com.google.android.backup/.BackupTransportService diff --git a/prebuilt/firmware/fw_bcm4329.bin b/prebuilt/firmware/fw_bcm4329.bin index 14601cc..6e28b3a 100755 Binary files a/prebuilt/firmware/fw_bcm4329.bin and b/prebuilt/firmware/fw_bcm4329.bin differ diff --git a/prebuilt/firmware/fw_bcm4329_apsta.bin b/prebuilt/firmware/fw_bcm4329_apsta.bin index 975c58c..9974359 100755 Binary files a/prebuilt/firmware/fw_bcm4329_apsta.bin and b/prebuilt/firmware/fw_bcm4329_apsta.bin differ diff --git a/prebuilt/kernel b/prebuilt/kernel index 2c53f72..ec6a952 100644 Binary files a/prebuilt/kernel and b/prebuilt/kernel differ diff --git a/prebuilt/modules/bcm4329.ko b/prebuilt/modules/bcm4329.ko index 66c91d0..03e1385 100644 Binary files a/prebuilt/modules/bcm4329.ko and b/prebuilt/modules/bcm4329.ko differ diff --git a/prebuilt/modules/cifs.ko b/prebuilt/modules/cifs.ko index 966896d..aa5a665 100644 Binary files a/prebuilt/modules/cifs.ko and b/prebuilt/modules/cifs.ko differ diff --git a/prebuilt/modules/fuse.ko b/prebuilt/modules/fuse.ko index 193970e..9adc7bf 100644 Binary files a/prebuilt/modules/fuse.ko and b/prebuilt/modules/fuse.ko differ diff --git a/prebuilt/modules/kineto_gan.ko b/prebuilt/modules/kineto_gan.ko index 1edf84e..3fe853a 100644 Binary files a/prebuilt/modules/kineto_gan.ko and b/prebuilt/modules/kineto_gan.ko differ diff --git a/prebuilt/modules/msm_rmnet.ko b/prebuilt/modules/msm_rmnet.ko index 138667a..68b97d6 100644 Binary files a/prebuilt/modules/msm_rmnet.ko and b/prebuilt/modules/msm_rmnet.ko differ diff --git a/prebuilt/modules/reiserfs.ko b/prebuilt/modules/reiserfs.ko new file mode 100755 index 0000000..6e174d7 Binary files /dev/null and b/prebuilt/modules/reiserfs.ko differ diff --git a/prebuilt/modules/tun.ko b/prebuilt/modules/tun.ko index ce4d3d7..4080141 100644 Binary files a/prebuilt/modules/tun.ko and b/prebuilt/modules/tun.ko differ diff --git a/prebuilt/modules/zram.ko b/prebuilt/modules/zram.ko new file mode 100755 index 0000000..6d8b61b Binary files /dev/null and b/prebuilt/modules/zram.ko differ