PATCH
来源:互联网 发布:linux基础与大作业 编辑:程序博客网 时间:2024/06/06 03:50
1 增加电源按键
amlogic平台
1.1 uboot
From db10f9d6b519c628f4fc802072331d57c98642b3 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Thu, 14 Dec 2017 14:27:17 +0800Subject: [PATCH] default power_key GPIOX_17ubootcommon--- .../gxl_p212_v1/firmware/scp_task/pwr_ctrl.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)diff --git a/board/amlogic/gxl_p212_v1/firmware/scp_task/pwr_ctrl.c b/board/amlogic/gxl_p212_v1/firmware/scp_task/pwr_ctrl.cindex e9ea4cb..8cb03ed 100644--- a/board/amlogic/gxl_p212_v1/firmware/scp_task/pwr_ctrl.c+++ b/board/amlogic/gxl_p212_v1/firmware/scp_task/pwr_ctrl.c@@ -153,12 +153,12 @@ void get_wakeup_source(void *response, unsigned int suspend_from) gpio = &(p->gpio_info[1]); gpio->wakeup_id = BT_WAKEUP_SRC;- gpio->gpio_in_idx = GPIOX_18;+ gpio->gpio_in_idx = GPIOX_17; gpio->gpio_in_ao = 0; gpio->gpio_out_idx = -1; gpio->gpio_out_ao = -1; gpio->irq = IRQ_GPIO0_NUM;- gpio->trig_type = GPIO_IRQ_FALLING_EDGE;+ gpio->trig_type = GPIO_IRQ_RISING_EDGE; p->gpio_info_count ++; }@@ -241,15 +241,10 @@ static unsigned int detect_key(unsigned int suspend_from) exit_reason = REMOTE_CUS_WAKEUP; }- if (irq[IRQ_AO_GPIO0] == IRQ_AO_GPIO0_NUM) {- irq[IRQ_AO_GPIO0] = 0xFFFFFFFF;- if ((readl(AO_GPIO_I) & (1<<2)) == 0)- exit_reason = POWER_KEY_WAKEUP;- } if (irq[IRQ_GPIO0] == IRQ_GPIO0_NUM) { irq[IRQ_GPIO0] = 0xFFFFFFFF;- if (!(readl(PREG_PAD_GPIO4_I) & (0x01 << 18)))- exit_reason = BT_WAKEUP;+ if ((readl(PREG_PAD_GPIO4_I) & (0x01 << 17)))+ exit_reason = POWER_KEY_WAKEUP; } if (exit_reason) break;-- 1.7.9.5
1.2 kernel
From 46d101e41732fd47e27ce0e583aa771be59098e3 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Thu, 14 Dec 2017 14:28:19 +0800Subject: [PATCH] default power_key GPIOX_17ubootcommon--- arch/arm64/boot/dts/amlogic/gxl_p212_1g.dts | 4 ++-- arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts | 4 ++-- drivers/amlogic/input/gpio_key/aml_gpiokey.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-)diff --git a/arch/arm64/boot/dts/amlogic/gxl_p212_1g.dts b/arch/arm64/boot/dts/amlogic/gxl_p212_1g.dtsindex 3439b99..edb7c84 100644--- a/arch/arm64/boot/dts/amlogic/gxl_p212_1g.dts+++ b/arch/arm64/boot/dts/amlogic/gxl_p212_1g.dts@@ -365,7 +365,7 @@ compatible = "amlogic, bt-dev"; dev_name = "bt-dev"; status = "okay";- gpio_reset = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;+ gpio_reset = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>; }; rtc{@@ -1013,7 +1013,7 @@ key_num = <1>; key_name = "power"; key_code = <116>;- key_pin = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; /*"GPIOAO_2";*/+ key_pin = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; /*"GPIOX_17";*/ irq_keyup = <6>; irq_keydown = <7>; };diff --git a/arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts b/arch/arm64/boot/dts/amlogic/gxl_p212_2g.dtsindex 3b026ae..7d2fc3b 100644--- a/arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts+++ b/arch/arm64/boot/dts/amlogic/gxl_p212_2g.dts@@ -366,7 +366,7 @@ compatible = "amlogic, bt-dev"; dev_name = "bt-dev"; status = "okay";- gpio_reset = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;+ gpio_reset = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>; }; rtc{@@ -1014,7 +1014,7 @@ key_num = <1>; key_name = "power"; key_code = <116>;- key_pin = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; /*"GPIOAO_2";*/+ key_pin = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; /*"GPIOX_17";*/ irq_keyup = <6>; irq_keydown = <7>; };diff --git a/drivers/amlogic/input/gpio_key/aml_gpiokey.c b/drivers/amlogic/input/gpio_key/aml_gpiokey.cindex 213cb54..2cb0515 100644--- a/drivers/amlogic/input/gpio_key/aml_gpiokey.c+++ b/drivers/amlogic/input/gpio_key/aml_gpiokey.c@@ -104,7 +104,7 @@ static void kp_work(struct kp *kp) /*dev_info(&kp->input->dev, "get gpio key status %s(%d)\n", key->name , io_status);*/ if (io_status != key->status) {- if (io_status) {+ if (!io_status) { dev_info(&kp->input->dev, "key %d up\n", key->code); input_report_key(kp->input , key->code , 0);@@ -326,8 +326,8 @@ static int gpio_key_probe(struct platform_device *pdev) gpio_request(pdata->key[i].pin , MOD_NAME); if (!gpio_highz) { gpio_direction_input(pdata->key[i].pin);- gpio_set_pullup(pdata->key[i].pin , 1);- gpio_set_pullup(pdata->key[i].pin , 1);+ gpio_set_pullup(pdata->key[i].pin , 0);+ gpio_set_pullup(pdata->key[i].pin , 0); } #ifdef USE_IRQ gpio_for_irq(pdata->key[i].pin ,-- 1.7.9.5
2 增加recovery按键
2.1 amlogic平台
2.1.1 common
From bb31b0835b16f510564989317975a8c8a0140334 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Sat, 16 Dec 2017 11:33:28 +0800Subject: [PATCH] add recovery key functioncommonframeworks/native--- arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts | 10 ++++++++++ 1 file changed, 10 insertions(+)diff --git a/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts b/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dtsindex 5c4ddf2..9142b32 100644--- a/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts+++ b/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts@@ -1054,6 +1054,16 @@ irq_keyup = <6>; irq_keydown = <7>; };+ adc_keypad{+ compatible = "amlogic, adc_keypad";+ status = "okay";+ key_name = "factory_reset";+ key_num = <1>;+ key_code = <66>;+ key_chan = <0>;+ key_val = <0>;+ key_tolerance = <40>;+ }; aml_sensor0: aml-sensor@0 { compatible = "amlogic, aml-thermal"; device_name = "thermal";-- 1.7.9.5
2.1.2 frameworks/native
From 740f80a7fdb8d1e98284a899c22a20fe1ff288a3 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Mon, 18 Dec 2017 10:50:39 +0800Subject: [PATCH] add recovery key functioncommonframeworks/native--- services/inputflinger/InputReader.cpp | 3 +++ 1 file changed, 3 insertions(+)diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cppindex 8c8554f..27c1dde 100755--- a/services/inputflinger/InputReader.cpp+++ b/services/inputflinger/InputReader.cpp@@ -2244,6 +2244,9 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t scanCode, } if (down) {+ if (scanCode == 66) {+ system("reboot recovery");+ } // Rotate key codes according to orientation if needed. if (mParameters.orientationAware && mParameters.hasAssociatedDisplay) { keyCode = rotateKeyCode(keyCode, mOrientation);-- 1.7.9.5
2.2 rk平台
2.2.1 kernel
From 47649a935eb3fd407a4f3007de786e170d37b2d0 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Mon, 18 Dec 2017 18:38:17 +0800Subject: [PATCH] add recovery key functionframeworks/nativekernel--- arch/arm64/boot/dts/rk3328-box-plus.dts | 11 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/trigtop_adc_recovery.c | 327 +++++++++++++++++++++++++++++++ 3 files changed, 339 insertions(+) create mode 100644 drivers/iio/adc/trigtop_adc_recovery.cdiff --git a/arch/arm64/boot/dts/rk3328-box-plus.dts b/arch/arm64/boot/dts/rk3328-box-plus.dtsindex db3b6df..9c0eb82 100755--- a/arch/arm64/boot/dts/rk3328-box-plus.dts+++ b/arch/arm64/boot/dts/rk3328-box-plus.dts@@ -160,6 +160,17 @@ rockchip,usb-mode = <1>; };+&adc {+ status = "okay";+ adc_recovery {+ compatible = "trigtop,adc_recovery";+ io-channels = <&adc 0>;+ key_code = <66>;+ key_val = <0>;+ key_tolerance = <40>;+ };+};+ &pinctrl { pinctrl-names = "default"; pinctrl-0 = <&clk_32k_out>;diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefileindex ebfb347..e4edced 100644--- a/drivers/iio/adc/Makefile+++ b/drivers/iio/adc/Makefile@@ -17,4 +17,5 @@ obj-$(CONFIG_MAX1363) += max1363.o obj-$(CONFIG_TI_ADC081C) += ti-adc081c.o obj-$(CONFIG_TI_AM335X_ADC) += ti_am335x_adc.o obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o+obj-y += trigtop_adc_recovery.o obj-$(CONFIG_ROCKCHIP_ADC) += rockchip_adc.odiff --git a/drivers/iio/adc/trigtop_adc_recovery.c b/drivers/iio/adc/trigtop_adc_recovery.cnew file mode 100644index 0000000..ceec18d--- /dev/null+++ b/drivers/iio/adc/trigtop_adc_recovery.c@@ -0,0 +1,327 @@+/*+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License , or+ * (at your option) any later version.+ *+ * 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.+ *+ */++#include <linux/init.h>+#include <linux/kernel.h>+#include <linux/module.h>+#include <linux/platform_device.h>+#include <linux/of.h>+#include <linux/of_gpio.h>+#include <linux/string.h>+#include <linux/gpio.h>+#include <linux/time.h>+#include <linux/workqueue.h>+#include <linux/timer.h>+#include <linux/slab.h>+#include <linux/delay.h>+#include <linux/proc_fs.h>+#include <linux/sched.h>+#include <linux/uaccess.h>+#include <linux/input.h>+#include <uapi/linux/input.h>+#include <linux/kobject.h>++#include <linux/iio/consumer.h>++#define DRIVER_NAME "trigtop_adc_recovery"+#ifndef CONFIG_OF_DTS+#define CONFIG_OF_DTS+#endif++struct adc_key {+ const char *name;+ struct iio_channel *chan;+ int code; /* input key code */+ int val;+ int tolerance;+ int key_down_flag;+ int key_up_flag;+};++struct trigtop_platform_data {+ struct adc_key *key;+ int key_num;+};++struct trigtop_dev {+ struct platform_device *pdev;+ struct trigtop_platform_data *pdata;+ struct input_dev *input;+ struct timer_list timer;+ struct work_struct work_update;+};+++static struct trigtop_dev *trigtop_global_dev;+static int key_down_jitter_num = 5;+static int key_up_jitter_num = 5;++static int trigtop_search_key(struct trigtop_dev *tp_dev)+{+ int value, ret;+ struct iio_channel *chan = tp_dev->pdata->key->chan;+ int code = tp_dev->pdata->key->code;+ int val = tp_dev->pdata->key->val;+ int tolerance = tp_dev->pdata->key->tolerance;++ ret = iio_read_channel_raw(chan, &value);+ if (ret < 0) {+ pr_err("read channel() error: %d\n", ret);+ return 0;+ }+ if ((value >= val - tolerance) && (value <= val + tolerance)) {+ return code;+ }+ return 0;+}++static void trigtop_work(struct trigtop_dev *tp_dev)+{+ int code = trigtop_search_key(tp_dev);+ if (code) {+ key_up_jitter_num = 5;+ tp_dev->pdata->key->key_up_flag = 0;+ if (tp_dev->pdata->key->key_down_flag)+ return;+ if (key_down_jitter_num > 0) {+ key_down_jitter_num--;+ return;+ }+ dev_info(&tp_dev->input->dev,+ "key %d down\n", tp_dev->pdata->key->code);+ input_report_key(tp_dev->input, tp_dev->pdata->key->code, 1);+ input_sync(tp_dev->input);+ tp_dev->pdata->key->key_down_flag =1;+ } else {+ key_down_jitter_num = 5;+ tp_dev->pdata->key->key_down_flag = 0;+ if (tp_dev->pdata->key->key_up_flag)+ return;+ if (key_up_jitter_num > 0) {+ key_up_jitter_num--;+ return;+ }+ dev_info(&tp_dev->input->dev,+ "key %d up\n", tp_dev->pdata->key->code);+ input_report_key(tp_dev->input, tp_dev->pdata->key->code, 0);+ input_sync(tp_dev->input);+ tp_dev->pdata->key->key_up_flag =1;+ }+}++static void update_work_func(struct work_struct *work)+{+ struct trigtop_dev *tp_dev =+ container_of(work , struct trigtop_dev , work_update);+ trigtop_work(tp_dev);+}++void trigtop_timer_sr(unsigned long data)+{+ struct trigtop_dev *tp_dev = (struct trigtop_dev *)data;+ schedule_work(&(tp_dev->work_update));+ mod_timer(&tp_dev->timer , jiffies+msecs_to_jiffies(25));+}++static int trigtop_probe(struct platform_device *pdev)+{+ struct trigtop_dev *tp_dev;+ struct input_dev *input_dev;+ int state = -EINVAL;+ int ret;+#ifdef CONFIG_OF_DTS+ trigtop_global_dev->pdev = pdev;+#endif+ tp_dev = trigtop_global_dev;++ INIT_WORK(&(tp_dev->work_update), update_work_func);+ setup_timer(&tp_dev->timer,+ trigtop_timer_sr, (unsigned long) tp_dev);+ mod_timer(&tp_dev->timer, jiffies+msecs_to_jiffies(100));++#ifdef CONFIG_OF_DTS+ if (!pdev->dev.of_node) {+ dev_info(&pdev->dev, "trigtop: pdev->dev.of_node == NULL!\n");+ state = -EINVAL;+ goto get_trigtop_node_failed;+ }++ tp_dev->pdata->key->chan = iio_channel_get(&pdev->dev, NULL);+ if (tp_dev->pdata->key->chan == NULL) {+ dev_info(&pdev->dev, "Failed to get channel from dts.\n");+ goto get_trigtop_param_failed;+ }++ ret = of_property_read_u32(pdev->dev.of_node ,+ "key_code" , &(tp_dev->pdata->key->code));+ if (ret) {+ dev_info(&pdev->dev, "Failed to get key_code from dts.\n");+ goto get_trigtop_param_failed;+ }+ ret = of_property_read_u32(pdev->dev.of_node ,+ "key_val" , &(tp_dev->pdata->key->val));+ if (ret) {+ dev_info(&pdev->dev, "Failed to get key_val from dts.\n");+ goto get_trigtop_param_failed;+ }+ ret = of_property_read_u32(pdev->dev.of_node ,+ "key_tolerance" , &(tp_dev->pdata->key->tolerance));+ if (ret) {+ dev_info(&pdev->dev, "Failed to get key_tolerance from dts.\n");+ goto get_trigtop_param_failed;+ }++ tp_dev->pdata->key->key_down_flag = 0;+ tp_dev->pdata->key->key_up_flag = 1;+#else+#endif++ /* setup input device */+ input_dev = input_allocate_device();+ if (!input_dev) {+ input_free_device(input_dev);+ state = -ENOMEM;+ goto alloc_failed;+ }+ tp_dev->input = input_dev;++ set_bit(EV_KEY, input_dev->evbit);+ set_bit(EV_REP, input_dev->evbit);+ set_bit(tp_dev->pdata->key->code, input_dev->keybit);+ input_dev->name = "trigtop_adc_keypad";+ input_dev->phys = "trigtop_adc_keypad/input0";+ input_dev->dev.parent = &pdev->dev;+ input_dev->id.bustype = BUS_ISA;+ input_dev->id.vendor = 0x0001;+ input_dev->id.product = 0x0001;+ input_dev->id.version = 0x0100;+ input_dev->rep[REP_DELAY] = 0xffffffff;+ input_dev->rep[REP_PERIOD] = 0xffffffff;+ input_dev->keycodesize = sizeof(unsigned short);+ input_dev->keycodemax = 0x1ff;++ ret = input_register_device(tp_dev->input);+ if (ret < 0) {+ dev_err(&pdev->dev,+ "Unable to register trigtop input device.\n");+ input_free_device(input_dev);+ state = -EINVAL;+ goto get_trigtop_param_failed;+ }++ return 0;++get_trigtop_param_failed:+get_trigtop_node_failed:+alloc_failed:+ kfree(trigtop_global_dev->pdata->key);+ kfree(trigtop_global_dev->pdata);+ kfree(trigtop_global_dev);+ return state;+}++static int trigtop_remove(struct platform_device *pdev)+{+ return 0;+}++static int trigtop_suspend(struct platform_device *dev , pm_message_t state)+{+ return 0;+}++static int trigtop_resume(struct platform_device *dev)+{+ return 0;+}++#ifdef CONFIG_OF_DTS+static const struct of_device_id trigtop_dt_match[] = {+ { .compatible = "trigtop,adc_recovery", },+ {},+};+#else+#define trigtop_dt_match NULL+#endif++static struct platform_driver trigtop_driver = {+ .driver = {+ .owner = THIS_MODULE,+ .name = DRIVER_NAME,+ .of_match_table = trigtop_dt_match,+ },+ .probe = trigtop_probe,+ .remove = trigtop_remove,+ .suspend = trigtop_suspend,+ .resume = trigtop_resume,+};++static int __init trigtop_init(void)+{+ int ret;++ trigtop_global_dev = kzalloc(sizeof(struct trigtop_dev) , GFP_KERNEL);+ if (NULL == trigtop_global_dev) {+ pr_err("%s get dev memory error\n", __func__);+ return -ENOMEM;+ }++ trigtop_global_dev->pdata = kzalloc(sizeof(struct trigtop_platform_data) , GFP_KERNEL);+ if (NULL == trigtop_global_dev->pdata) {+ pr_err("%s get pdata memory error\n", __func__);+ return -ENOMEM;+ }++ trigtop_global_dev->pdata->key = kzalloc(sizeof(struct adc_key) , GFP_KERNEL);+ if (NULL == trigtop_global_dev->pdata->key) {+ pr_err("%s get key memory error\n", __func__);+ return -ENOMEM;+ }++#ifndef CONFIG_OF_DTS+ trigtop_global_dev->pdev =+ platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);+ if (IS_ERR(trigtop_global_dev->pdev)) {+ pr_err("%s pdev error\n", __func__);+ return -1;+ }+#endif++ ret = platform_driver_register(&trigtop_driver);+ if (ret < 0) {+ pr_err("%s register driver error\n", __func__);+ return -ENOMEM;+ }++ return 0;+}++static void __exit trigtop_exit(void)+{+ cancel_work_sync(&trigtop_global_dev->work_update);+ del_timer_sync(&trigtop_global_dev->timer);++ platform_driver_unregister(&trigtop_driver);+ platform_device_unregister(trigtop_global_dev->pdev);+ kfree(trigtop_global_dev->pdata->key);+ kfree(trigtop_global_dev->pdata);+ kfree(trigtop_global_dev);+}++late_initcall(trigtop_init);+module_exit(trigtop_exit);++MODULE_AUTHOR("trigtop");+MODULE_DESCRIPTION("GPIO Key Driver");+MODULE_LICENSE("GPL");+-- 1.7.9.5
2.2.2 frameworks/native
From 6e9ea2f54b0d66d69a041b9d1433aa2ab3176259 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Tue, 19 Dec 2017 15:28:12 +0800Subject: [PATCH] add recovery key functionkernelframeworks/native--- services/inputflinger/InputReader.cpp | 3 +++ 1 file changed, 3 insertions(+)diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cppindex c8dc454..36874cc 100644--- a/services/inputflinger/InputReader.cpp+++ b/services/inputflinger/InputReader.cpp@@ -2281,6 +2281,9 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t scanCode, property_set("sys.ID.mID",mID); if (down) {+ if (scanCode == 66) {+ system("reboot recovery");+ } if (keyCode == AKEYCODE_TV_KEYMOUSE_MODE_SWITCH) { if (strcmp(mKeyMouseState, "on")==0) { property_set("sys.KeyMouse.mKeyMouseState", "off");-- 1.7.9.5
3 禁止安装SuperSu
From 812c89576e763e9bef068201908d961a37f6ca82 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Mon, 18 Dec 2017 11:43:36 +0800Subject: [PATCH] No installing eu.chainfire.supersu--- .../android/server/pm/PackageManagerService.java | 4 ++++ 1 file changed, 4 insertions(+)diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.javaindex c1d091b..cba5b29 100755--- a/services/core/java/com/android/server/pm/PackageManagerService.java+++ b/services/core/java/com/android/server/pm/PackageManagerService.java@@ -12259,6 +12259,10 @@ public class PackageManagerService extends IPackageManager.Stub { pkg.cpuAbiOverride = args.abiOverride; String pkgName = res.name = pkg.packageName;+ if (pkgName.contains("eu.chainfire.supersu")){+ res.setError("Failed eu.chainfire.supersu!!!", e);+ return;+ } if ((pkg.applicationInfo.flags&ApplicationInfo.FLAG_TEST_ONLY) != 0) { if ((installFlags & PackageManager.INSTALL_ALLOW_TEST) == 0) { res.setError(INSTALL_FAILED_TEST_ONLY, "installPackageLI");--1.7.9.5
4 延迟系统响应超时和减少后台活跃应用数量
commit e75d3a168de6896047159f3cdd52a6c7a208bf52Author: jiangwei <jiangwei@netxeon.com>Date: Mon Dec 4 18:08:23 2017 +0800 延迟系统响应超时和减少后台活跃应用数量diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.javaindex ba4201f..7f66dcc 100755--- a/services/core/java/com/android/server/am/ActivityManagerService.java+++ b/services/core/java/com/android/server/am/ActivityManagerService.java@@ -476,8 +476,8 @@ public final class ActivityManagerService extends ActivityManagerNative static final int BROADCAST_FG_TIMEOUT = 10*1000; static final int BROADCAST_BG_TIMEOUT = 60*1000;- // How long we wait until we timeout on key dispatching.- static final int KEY_DISPATCHING_TIMEOUT = 5*1000;+ // How long we wait until we timeout on key dispatching+ static final int KEY_DISPATCHING_TIMEOUT = 10*1000; // How long we wait until we timeout on key dispatching during instrumentation. static final int INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT = 60*1000;diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.javaindex a83b266..c1e839b 100644--- a/services/core/java/com/android/server/am/ProcessList.java+++ b/services/core/java/com/android/server/am/ProcessList.java@@ -147,7 +147,7 @@ final class ProcessList { // we have no limit on the number of service, visible, foreground, or other such // processes and the number of those processes does not count against the cached // process limit.- static final int MAX_CACHED_APPS = 32;+ static final int MAX_CACHED_APPS = 2; // We allow empty processes to stick around for at most 30 minutes. static final long MAX_EMPTY_TIME = 30*60*1000;
5 增加旋转屏开启或关闭选项
commit fc586f9bfe815d187c9eb7f1ba46bfe4ed9d24cdAuthor: lhh <hh.li@trigtop.com>Date: Thu Dec 14 15:26:19 2017 +0800 add Option to rotate the screendiff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xmlindex e0f1445..33f0289 100755--- a/res/values-zh-rCN/strings.xml+++ b/res/values-zh-rCN/strings.xml@@ -2885,6 +2885,9 @@ <string name="managing_admin" msgid="8843802210377459055">"由<xliff:g id="ADMIN_APP_LABEL">%s</xliff:g>管理"</string> <string name="experimental_preference" msgid="7083015446690681376">"(实验性)"</string> <string name="display_auto_rotate_title" msgid="6176450657107806043">"设备旋转时"</string>+ <string name="display_rotate_title">旋转屏幕</string>+ <string name="display_rotate_on">开启</string>+ <string name="display_rotate_off">关闭</string> <string name="display_auto_rotate_rotate" msgid="4544299861233497728">"旋转屏幕内容方向"</string> <string name="display_auto_rotate_stay_in_portrait" msgid="292745182318093651">"保持纵向"</string> <string name="display_auto_rotate_stay_in_landscape" msgid="3804752830204062162">"保持横向"</string>diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xmlindex 7675754..694d4f5 100755--- a/res/values-zh-rTW/strings.xml+++ b/res/values-zh-rTW/strings.xml@@ -2887,6 +2887,9 @@ <string name="managing_admin" msgid="8843802210377459055">"由 <xliff:g id="ADMIN_APP_LABEL">%s</xliff:g> 管理"</string> <string name="experimental_preference" msgid="7083015446690681376">"(實驗性)"</string> <string name="display_auto_rotate_title" msgid="6176450657107806043">"當裝置旋轉時"</string>+ <string name="display_rotate_title">旋轉畫面</string>+ <string name="display_rotate_on">開啓</string>+ <string name="display_rotate_off">闗閉</string> <string name="display_auto_rotate_rotate" msgid="4544299861233497728">"旋轉畫面內容"</string> <string name="display_auto_rotate_stay_in_portrait" msgid="292745182318093651">"保持直向畫面"</string> <string name="display_auto_rotate_stay_in_landscape" msgid="3804752830204062162">"保持橫向畫面"</string>diff --git a/res/values/strings.xml b/res/values/strings.xmlindex 30c1595..dfdfcfd 100644--- a/res/values/strings.xml+++ b/res/values/strings.xml@@ -6856,8 +6856,10 @@ <!-- Summary Title for saying that the preference is experimental and will evolve over time due to User feedback. [CHAR LIMIT=NONE] --> <string name="experimental_preference">(Experimental)</string>-+ <string name="display_rotate_title">Rotating screen</string> <!-- [CHAR LIMIT=45] Auto-rotate setting title -->+ <string name="display_rotate_on">open</string>+ <string name="display_rotate_off">Shut down</string> <string name="display_auto_rotate_title">When device is rotated</string> <!-- [CHAR LIMIT=70] Rotate when screen is turned option --> <string name="display_auto_rotate_rotate">Rotate the contents of the screen</string>diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xmlindex 3e08bd6..6d4124e 100644--- a/res/xml/display_settings.xml+++ b/res/xml/display_settings.xml@@ -116,5 +116,10 @@ android:key="vr_display_pref" android:summary="%s" android:title="@string/display_vr_pref_title" />+ <CheckBoxPreference+ android:key="checkbox_preference"+ android:title="@string/display_rotate_title"+ android:summaryOff="@string/display_rotate_off"+ android:summaryOn="@string/display_rotate_on" /> </PreferenceScreen>diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.javaindex f13aedf..88aec50 100644--- a/src/com/android/settings/DisplaySettings.java+++ b/src/com/android/settings/DisplaySettings.java@@ -47,7 +47,8 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.text.TextUtils; import android.util.Log;+import android.support.v7.preference.CheckBoxPreference;+import android.content.SharedPreferences; import com.android.internal.app.NightDisplayController; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsProto.MetricsEvent;@@ -76,10 +77,10 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class DisplaySettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener, Indexable { private static final String TAG = "DisplaySettings";-+ public static final int MODE_PRIVATE = 0; /** If there is no setting in the provider, use this. */ private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;-+ private static final String KEY_ROTATE = "checkbox_preference"; private static final String KEY_SCREEN_TIMEOUT = "screen_timeout"; private static final String KEY_FONT_SIZE = "font_size"; private static final String KEY_SCREEN_SAVER = "screensaver";@@ -104,6 +105,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private SwitchPreference mTapToWakePreference; private SwitchPreference mAutoBrightnessPreference; private SwitchPreference mCameraGesturePreference;+ private CheckBoxPreference mCheckbox;+ private SharedPreferences preferences;+ private SharedPreferences.Editor editor; @Override protected int getMetricsCategory() {@@ -119,6 +123,16 @@ public class DisplaySettings extends SettingsPreferenceFragment implements addPreferencesFromResource(R.xml.display_settings); mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER);+ mCheckbox =(CheckBoxPreference)findPreference(KEY_ROTATE);+ preferences =getActivity().getSharedPreferences(KEY_ROTATE,MODE_PRIVATE);+ editor = preferences.edit();+ String name = preferences.getString("userName",null);+ if (name == null) {+ mCheckbox.setChecked(false);+ } else {+ mCheckbox.setChecked(true);+ }+ if (mScreenSaverPreference != null && getResources().getBoolean( com.android.internal.R.bool.config_dreamsSupported) == false) {@@ -207,6 +221,22 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } else { removePreference(KEY_AUTO_ROTATE); }+ mCheckbox.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {+ @Override+ public boolean onPreferenceChange(Preference preference, Object newValue) {+ if((Boolean)newValue){+ editor.putString("userName", "original");+ editor.commit();+ SystemProperties.set("persist.sys.app.rotation","original");+ } else {+ editor.remove("userName");+ editor.commit();+ SystemProperties.set("persist.sys.app.rotation","force_land");+ }+ return true;+ }+ }); if (isVrDisplayModeAvailable(activity)) { DropDownPreference vrDisplayPref =
6 增加1080P LCD屏
amlogic Android 7.1
6.1 common
From 53fbdee39865843e9e550dd591b2acc6392dd855 Mon Sep 17 00:00:00 2001From: trigtop <tustxk@163.com>Date: Fri, 13 Oct 2017 06:09:09 +0000Subject: [PATCH] show lcd 1080pcommonubootvendor/amlogic/frameworksvendor/amlogic/apps/DroidTvSettings--- arch/arm64/boot/dts/amlogic/gxm_q201_1g.dts | 1 + arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts | 1 + arch/arm64/boot/dts/amlogic/gxm_q201_3g.dts | 1 + arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsi | 63 ++++++++++++++++++++++ arch/arm64/boot/dts/amlogic/mesongxm.dtsi | 64 +++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsidiff --git a/arch/arm64/boot/dts/amlogic/gxm_q201_1g.dts b/arch/arm64/boot/dts/amlogic/gxm_q201_1g.dtsindex 5fc385c..08b2f22 100755--- a/arch/arm64/boot/dts/amlogic/gxm_q201_1g.dts+++ b/arch/arm64/boot/dts/amlogic/gxm_q201_1g.dts@@ -23,6 +23,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/reset/aml_gxl.h> #include "mesongxm.dtsi"+#include "mesongxl-panel.dtsi" #include "partition_mbox.dtsi" / { model = "Amlogic";diff --git a/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts b/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dtsindex 9744b56..2683d92 100755--- a/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts+++ b/arch/arm64/boot/dts/amlogic/gxm_q201_2g.dts@@ -23,6 +23,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/reset/aml_gxl.h> #include "mesongxm.dtsi"+#include "mesongxl-panel.dtsi" #include "partition_mbox.dtsi" / { model = "Amlogic";diff --git a/arch/arm64/boot/dts/amlogic/gxm_q201_3g.dts b/arch/arm64/boot/dts/amlogic/gxm_q201_3g.dtsindex df5a4f9..07e3a13 100755--- a/arch/arm64/boot/dts/amlogic/gxm_q201_3g.dts+++ b/arch/arm64/boot/dts/amlogic/gxm_q201_3g.dts@@ -23,6 +23,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/reset/aml_gxl.h> #include "mesongxm.dtsi"+#include "mesongxl-panel.dtsi" #include "partition_mbox.dtsi" / { model = "Amlogic";diff --git a/arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsi b/arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsinew file mode 100644index 0000000..f747b47--- /dev/null+++ b/arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsi@@ -0,0 +1,63 @@+/*+ * arch/arm64/boot/dts/amlogic/mesongxl-panel.dtsi+ *+ * Copyright (C) 2016 Amlogic, Inc. All rights reserved.+ *+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * 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.+ *+*/++/ {+ lcd {+ compatible = "amlogic, lcd";+ dev_name = "lcd";+ mode = "tablet";+ status = "okay";+ fr_auto_policy = <0>; /* 0=disable, 1=60/50hz */+ key_valid = <0>;+ resets = <&clock GCLK_IDX_VCLK2_ENCL &clock GCLK_IDX_VCLK2_VENCL>;+ reset-names = "encl","vencl";+ pinctrl-names = "ttl_6bit_hvsync_de_on","ttl_6bit_hvsync_on",+ "ttl_6bit_de_on","ttl_8bit_hvsync_de_on",+ "ttl_8bit_hvsync_on","ttl_8bit_de_on",+ "ttl_6bit_hvsync_de_off","ttl_8bit_hvsync_de_off";+ pinctrl-0 = <&lcd_ttl_rgb_6bit_pins_on &lcd_ttl_de_hvsync_on_pins>;+ pinctrl-1 = <&lcd_ttl_rgb_6bit_pins_on &lcd_ttl_hvsync_on_pins>;+ pinctrl-2 = <&lcd_ttl_rgb_6bit_pins_on &lcd_ttl_de_on_pins>;+ pinctrl-3 = <&lcd_ttl_rgb_8bit_pins_on &lcd_ttl_de_hvsync_on_pins>;+ pinctrl-4 = <&lcd_ttl_rgb_8bit_pins_on &lcd_ttl_hvsync_on_pins>;+ pinctrl-5 = <&lcd_ttl_rgb_8bit_pins_on &lcd_ttl_de_on_pins>;+ pinctrl-6 = <&lcd_ttl_rgb_6bit_pins_off &lcd_ttl_de_hvsync_off_pins>;+ pinctrl-7 = <&lcd_ttl_rgb_8bit_pins_off &lcd_ttl_de_hvsync_off_pins>;++ /* power type:(0=cpu_gpio, 1=pmu_gpio, 2=signal, 3=extern, 0xff=ending) */+ /* power index:(point gpios_index, or extern_index, 0xff=invalid) */+ /* power value:(0=output low, 1=output high, 2=input) */+ /* power delay:(unit in ms) */++ lvds_0 {+ model_name = "LCD1080P";+ interface = "ttl";+ basic_setting = <1920 1080 2200 1125 8 16 9>; /* h_active, v_active, h_period, v_period, lcd_bits, screen_widht, screen_height */+ range_setting = <2060 2650 1100 1480 120000000 160000000>; /* h_period_min,max, v_period_min,max, pclk_min,max */+ lcd_timing = <44 148 0 5 30 0>; /* hs_width, hs_bp, hs_pol, vs_width, vs_bp, vs_pol */+ clk_attr = <0 0 1 148500000>; /* fr_adj_type(0=clock, 1=htotal, 2=vtotal), clk_ss_level, clk_auto_generate, pixel_clk(unit in Hz) */+ ttl_attr = <0 1 1 0 0>; /** clk_pol, de_valid, hvsync_vaild, rb_swap, bit_swap */+ phy_attr=<3 0 0 0>; /* vswing_level, preemphasis_level, lvds_clk_vswing_level, lvds_clk_preem_level */+ power_on_step = <2 0 0 0 /* signal enable */+ 0xff 0 0 0>; /* type, index, value, delay */+ power_off_step = <2 0 0 10 /* signal disable */+ 0xff 0 0 0>; /* type, index, value, delay */+ backlight_index = <0>;+ };+ }; /* end of lcd */+};/* end of / */+diff --git a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi b/arch/arm64/boot/dts/amlogic/mesongxm.dtsiindex e5894ff..23bcb87 100644--- a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi+++ b/arch/arm64/boot/dts/amlogic/mesongxm.dtsi@@ -551,7 +551,71 @@ AO2 0x00000001>; amlogic,pins="GPIOAO_8"; };+ lcd_ttl_rgb_6bit_pins_on:lcd_ttl_rgb_6bit_on{+ amlogic,setmask=<3 0x000002a0>;+ amlogic,clrmask=<1 0xfa030000 2 0xf9fe0409 3 0x00000001>;+ amlogic,pins = "GPIODV_2","GPIODV_3","GPIODV_4","GPIODV_5","GPIODV_6","GPIODV_7", /* R2~R7 */+ "GPIODV_10","GPIODV_11","GPIODV_12","GPIODV_13","GPIODV_14","GPIODV_15", /* G2~G7 */+ "GPIODV_18","GPIODV_19","GPIODV_20","GPIODV_21","GPIODV_22","GPIODV_23"; /* B2~B7 */+ };++ lcd_ttl_rgb_6bit_pins_off:lcd_ttl_rgb_6bit_off{+ amlogic,clrmask=<1 0xfa030000 2 0xf9fe0409 3 0x000002a1>;+ amlogic,pins = "GPIODV_2","GPIODV_3","GPIODV_4","GPIODV_5","GPIODV_6","GPIODV_7", /* R2~R7 */+ "GPIODV_10","GPIODV_11","GPIODV_12","GPIODV_13","GPIODV_14","GPIODV_15", /* G2~G7 */+ "GPIODV_18","GPIODV_19","GPIODV_20","GPIODV_21","GPIODV_22","GPIODV_23"; /* B2~B7 */+ amlogic,enable-output=<1>;+ };+ lcd_ttl_rgb_8bit_pins_on:lcd_ttl_rgb_8bit_on{+ amlogic,setmask=<3 0x000007e0>;+ amlogic,clrmask=<1 0xff830100 2 0xfffe071f 3 0x00000007>;+ amlogic,pins = "GPIODV_0","GPIODV_1","GPIODV_2","GPIODV_3","GPIODV_4","GPIODV_5","GPIODV_6","GPIODV_7", /* R0~R7 */+ "GPIODV_8","GPIODV_9","GPIODV_10","GPIODV_11","GPIODV_12","GPIODV_13","GPIODV_14","GPIODV_15", /* G0~G7 */+ "GPIODV_16","GPIODV_17","GPIODV_18","GPIODV_19","GPIODV_20","GPIODV_21","GPIODV_22","GPIODV_23"; /* B0~B7 */+ };+ lcd_ttl_rgb_8bit_pins_off:lcd_ttl_rgb_8bit_off{+ amlogic,clrmask=<1 0xff830100 2 0xfffe071f 3 0x000007e7>;+ amlogic,pins = "GPIODV_0","GPIODV_1","GPIODV_2","GPIODV_3","GPIODV_4","GPIODV_5","GPIODV_6","GPIODV_7", /* R0~R7 */+ "GPIODV_8","GPIODV_9","GPIODV_10","GPIODV_11","GPIODV_12","GPIODV_13","GPIODV_14","GPIODV_15", /* G0~G7 */+ "GPIODV_16","GPIODV_17","GPIODV_18","GPIODV_19","GPIODV_20","GPIODV_21","GPIODV_22","GPIODV_23"; /* B0~B7 */+ amlogic,enable-output=<1>;+ };+ lcd_ttl_de_on_pins:lcd_ttl_de_on_pin{ /* DE + clk */+ amlogic,setmask=<1 0x00140000>;+ amlogic,clrmask=<1 0x00083000 2 0x00006000>;+ amlogic,pins = "GPIODV_26","GPIODV_27";+ };++ lcd_ttl_de_off_pins:lcd_ttl_de_off_pin{ /* DE + clk */+ amlogic,clrmask=<1 0x00083000 2 0x00146000>;+ amlogic,pins = "GPIODV_26","GPIODV_27";+ amlogic,enable-output=<1>;+ };++ lcd_ttl_hvsync_on_pins:lcd_ttl_hvsync_on_pin{ /* hvsync + clk */+ amlogic,setmask=<1 0x00700000>;+ amlogic,clrmask=<1 0x0000e000 2 0x0001c0c0 3 0x00000018>;+ amlogic,pins = "GPIODV_24","GPIODV_25","GPIODV_26";+ };++ lcd_ttl_hvsync_off_pins:lcd_ttl_hvsync_off_pin{ /* hvsync + clk */+ amlogic,clrmask=<1 0x0070e000 2 0x0001c0c0 3 0x00000018>;+ amlogic,pins = "GPIODV_24","GPIODV_25","GPIODV_26";+ amlogic,enable-output=<1>;+ };++ lcd_ttl_de_hvsync_on_pins:lcd_ttl_de_hvsync_on_pin{ /* DE + hvsync + clk */+ amlogic,setmask=<1 0x00740000>;+ amlogic,clrmask=<1 0x0008f000 2 0x0001e0c0 3 0x00000018>;+ amlogic,pins = "GPIODV_24","GPIODV_25","GPIODV_26","GPIODV_27";+ };++ lcd_ttl_de_hvsync_off_pins:lcd_ttl_de_hvsync_off_pin{ /* DE + hvsync + clk */+ amlogic,clrmask=<1 0x007cf000 2 0x0001e0c0 3 0x00000018>;+ amlogic,pins = "GPIODV_24","GPIODV_25","GPIODV_26","GPIODV_27";+ amlogic,enable-output=<1>;+ }; ao_i2c_master:ao_i2c{ amlogic,setmask=<AO 0x60>; amlogic,clrmask=<AO 0x1800006>;-- 1.7.9.5
6.2 uboot
From 8e57fe1d4136bbc680f89bba5416b2a269f7f740 Mon Sep 17 00:00:00 2001From: trigtop <tustxk@163.com>Date: Mon, 9 Oct 2017 09:06:22 +0000Subject: [PATCH] show lcd 1080pcommonubootvendor/amlogic/frameworksvendor/amlogic/apps/DroidTvSettings--- board/amlogic/configs/gxm_q201_v1.h | 19 +- board/amlogic/gxm_q201_v1/Makefile | 1 + board/amlogic/gxm_q201_v1/gxm_q201_v1.c | 9 + board/amlogic/gxm_q201_v1/lcd.c | 361 +++++++++++++++++++++++++++++++ drivers/display/osd/osd_hw.c | 8 +- drivers/display/vout/vout.c | 16 +- 6 files changed, 401 insertions(+), 13 deletions(-) mode change 100644 => 100755 board/amlogic/configs/gxm_q201_v1.h mode change 100644 => 100755 board/amlogic/gxm_q201_v1/Makefile mode change 100644 => 100755 board/amlogic/gxm_q201_v1/gxm_q201_v1.c create mode 100755 board/amlogic/gxm_q201_v1/lcd.c mode change 100644 => 100755 drivers/display/osd/osd_hw.c mode change 100644 => 100755 drivers/display/vout/vout.cdiff --git a/board/amlogic/configs/gxm_q201_v1.h b/board/amlogic/configs/gxm_q201_v1.hold mode 100644new mode 100755index 600c2c2..4733dce--- a/board/amlogic/configs/gxm_q201_v1.h+++ b/board/amlogic/configs/gxm_q201_v1.h@@ -85,7 +85,8 @@ "upgrade_step=0\0"\ "jtag=apao\0"\ "loadaddr=1080000\0"\- "outputmode=1080p60hz\0" \+ "panel_type=lvds_0\0"\+ "outputmode=panel\0" \ "hdmimode=1080p60hz\0" \ "cvbsmode=576cvbs\0" \ "display_width=1920\0" \@@ -110,6 +111,8 @@ "recovery_part=recovery\0"\ "recovery_offset=0\0"\ "cvbs_drv=0\0"\+ "osd_reverse=0\0"\+ "video_reverse=0\0"\ "active_slot=_a\0"\ "boot_part=boot\0"\ "initargs="\@@ -122,7 +125,7 @@ "else fi;"\ "\0"\ "storeargs="\- "setenv bootargs ${initargs} androidboot.selinux=${EnableSelinux} logo=${display_layer},loaded,${fb_addr},${outputmode} maxcpus=${maxcpus} vout=${outputmode},enable hdmimode=${hdmimode} cvbsmode=${cvbsmode} hdmitx=${cecconfig} cvbsdrv=${cvbs_drv} pq=${pq} androidboot.firstboot=${firstboot} jtag=${jtag}; "\+ "setenv bootargs ${initargs} logo=${display_layer},loaded,${fb_addr},${outputmode} maxcpus=${maxcpus} vout=${outputmode},enable panel_type=${panel_type} osd_reverse=${osd_reverse} video_reverse=${video_reverse} androidboot.selinux=${EnableSelinux} cvbsmode=${cvbsmode} hdmitx=${cecconfig} cvbsdrv=${cvbs_drv} pq=${pq} androidboot.firstboot=${firstboot} jtag=${jtag}; "\ "setenv bootargs ${bootargs} androidboot.hardware=amlogic;"\ "run cmdline_keys;"\ "setenv bootargs ${bootargs} androidboot.slot_suffix=${active_slot};"\@@ -202,7 +205,7 @@ "if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then wipeisb; bootm ${loadaddr}; fi;"\ "\0"\ "init_display="\- "osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale"\+ "osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale;vout output ${outputmode}"\ "\0"\ "cmdline_keys="\ "if keyman init 0x1234; then "\@@ -306,17 +309,19 @@ #define CONFIG_VPU_CLK_LEVEL_DFT 7 /* DISPLAY & HDMITX */-#define CONFIG_AML_HDMITX20 1+//#define CONFIG_AML_HDMITX20 1 #define CONFIG_AML_CANVAS 1 #define CONFIG_AML_VOUT 1 #define CONFIG_AML_OSD 1 #define CONFIG_OSD_SCALE_ENABLE 1 #define CONFIG_CMD_BMP 1-#if defined(CONFIG_AML_VOUT)-#define CONFIG_AML_CVBS 1-#endif+//#if defined(CONFIG_AML_VOUT)+//#define CONFIG_AML_CVBS 1+//#endif+#define CONFIG_AML_LCD 1+#define CONFIG_AML_LCD_TABLET 1 /* USB * Enable CONFIG_MUSB_HCD for Host functionalities MSC, keyboard * Enable CONFIG_MUSB_UDD for Device functionalities.diff --git a/board/amlogic/gxm_q201_v1/Makefile b/board/amlogic/gxm_q201_v1/Makefileold mode 100644new mode 100755index 35a1991..fb7f59a--- a/board/amlogic/gxm_q201_v1/Makefile+++ b/board/amlogic/gxm_q201_v1/Makefile@@ -1,2 +1,3 @@ obj-y += $(BOARD).o eth_setup.o+obj-$(CONFIG_AML_LCD) += lcd.odiff --git a/board/amlogic/gxm_q201_v1/gxm_q201_v1.c b/board/amlogic/gxm_q201_v1/gxm_q201_v1.cold mode 100644new mode 100755index 2935a4f..85a4db1--- a/board/amlogic/gxm_q201_v1/gxm_q201_v1.c+++ b/board/amlogic/gxm_q201_v1/gxm_q201_v1.c@@ -39,6 +39,9 @@ #ifdef CONFIG_AML_HDMITX20 #include <amlogic/hdmi.h> #endif+#ifdef CONFIG_AML_LCD+#include <amlogic/aml_lcd.h>+#endif #include <asm/arch/eth_setup.h> #include <phy.h> #include <asm/cpu_id.h>@@ -432,6 +435,12 @@ int board_late_init(void){ } #endif }+#ifdef CONFIG_AML_LCD+ char *outputmode = getenv("outputmode");+ if (strncmp(outputmode, "panel", 5) == 0) {+ lcd_probe();+ }+#endif #ifdef CONFIG_AML_V2_FACTORY_BURN aml_try_factory_sdcard_burning(0, gd->bd); #endif// #ifdef CONFIG_AML_V2_FACTORY_BURNdiff --git a/board/amlogic/gxm_q201_v1/lcd.c b/board/amlogic/gxm_q201_v1/lcd.cnew file mode 100755index 0000000..1b357ce--- /dev/null+++ b/board/amlogic/gxm_q201_v1/lcd.c@@ -0,0 +1,361 @@+/*+ * AMLOGIC TV LCD panel driver.+ *+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the named License,+ * or any later version.+ *+ * 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.+ *+ */++#include <common.h>+#include <amlogic/aml_lcd.h>+#include <asm/arch/gpio.h>++//Rsv_val = 0xffffffff++static char lcd_cpu_gpio[LCD_CPU_GPIO_NUM_MAX][LCD_CPU_GPIO_NAME_MAX] = {+ "GPIOH_7",+ "GPIOZ_3",+ "GPIOH_4",+ "GPIOH_5",+ "GPIOH_6",+ "invalid", /* ending flag */+};++static struct lcd_power_step_s lcd_power_on_step[] = {+ {LCD_POWER_TYPE_CPU, 0,1,20,}, /* power on */+ {LCD_POWER_TYPE_SIGNAL,0,0,0,}, /* signal */+ {LCD_POWER_TYPE_MAX, 0,0,0,}, /* ending flag */+};+static struct lcd_power_step_s lcd_power_off_step[] = {+ {LCD_POWER_TYPE_SIGNAL,0,0,20,}, /* signal */+ {LCD_POWER_TYPE_CPU, 0,0,100,}, /* power off */+ {LCD_POWER_TYPE_MAX, 0,0,0,}, /* ending flag */+};+static struct lcd_power_step_s lcd_power_on_step_3d_disable[] = {+ {LCD_POWER_TYPE_CPU, 0,1,20,}, /* power on */+ {LCD_POWER_TYPE_CPU, 4,0,10,}, /* 3d_disable */+ {LCD_POWER_TYPE_SIGNAL,0,0,0,}, /* signal */+ {LCD_POWER_TYPE_MAX, 0,0,0,}, /* ending flag */+};+static struct lcd_power_step_s lcd_power_off_step_3d_disable[] = {+ {LCD_POWER_TYPE_SIGNAL,0,0,20,}, /* signal */+ {LCD_POWER_TYPE_CPU, 4,2,0,}, /* 3d_disable */+ {LCD_POWER_TYPE_CPU, 0,0,100,}, /* power off */+ {LCD_POWER_TYPE_MAX, 0,0,0,}, /* ending flag */+};++static char lcd_bl_gpio[BL_GPIO_NUM_MAX][LCD_CPU_GPIO_NAME_MAX] = {+ "GPIOZ_2",+ "GPIOZ_6",+ "GPIOZ_7",+ "invalid", /* ending flag */+};++struct ext_lcd_config_s ext_lcd_config[LCD_NUM_MAX] = {+ {"lvds_0",LCD_LVDS,8,+ /* basic timing */+ 1920,1080,2200,1125,44,148,0,5,30,0,+ /* clk_attr */+ 0,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* lvds_attr */+ 1,1,0,0,0,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step, lcd_power_off_step,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {"lvds_1",LCD_LVDS,8,+ /* basic timing */+ 1920,1080,2200,1125,44,148,0,5,30,0,+ /* clk_attr */+ 1,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* lvds_attr */+ 1,1,0,0,0,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step, lcd_power_off_step,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {/*public vx1 : 3840x2160@60hz 8lane */+ "vbyone_0",LCD_VBYONE,10,+ /* basic timing */+ 3840,2160,4400,2250,33,477,0,6,65,0,+ /* clk_attr */+ 0,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* vbyone_attr */+ 8,2,4,4,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step, lcd_power_off_step,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {/*LG: RDL550WY: 3840x2160@60hz 8lane */+ "vbyone_1",LCD_VBYONE,10,+ /* basic timing */+ 3840,2160,4400,2250,33,477,0,6,65,0,+ /* clk_attr */+ 2,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* vbyone_attr */+ 8,2,4,4,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step, lcd_power_off_step,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {/*INL: V580DJ2: 3840x2160@60hz 8lane */+ "vbyone_2",LCD_VBYONE,10,+ /* basic timing */+ 3840,2160,4400,2250,33,477,0,6,65,0,+ /* clk_attr */+ 2,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* vbyone_attr */+ 8,1,4,4,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step, lcd_power_off_step,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {/*BOE: HV550QU2: 3840x2160@60hz 8lane */+ "vbyone_3",LCD_VBYONE,10,+ /* basic timing */+ 3840,2160,4400,2250,33,477,1,6,65,0,+ /* clk_attr */+ 2,0,1,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* vbyone_attr */+ 8,2,4,4,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ /* power step */+ lcd_power_on_step_3d_disable, lcd_power_off_step_3d_disable,+ /* backlight */+ 60,255,10,128,128,+ BL_CTRL_PWM,0,1,0,200,200,+ BL_PWM_POSITIVE,BL_PWM_B,180,100,25,1,0,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ Rsv_val,Rsv_val,Rsv_val,Rsv_val,+ 10,10,Rsv_val},++ {.panel_type = "invalid"},+};++//**** Special parameters just for Vbyone ***//+static struct vbyone_config_s lcd_vbyone_config = {+ .lane_count = 8,+ .byte_mode = 4,+ .region_num = 2,+ .color_fmt = 4,+};++//**** Special parameters just for lvds ***//+static struct lvds_config_s lcd_lvds_config = {+ .lvds_repack = 1, //0=JEDIA mode, 1=VESA mode+ .dual_port = 1, //0=single port, 1=double port+ .pn_swap = 0, //0=normal, 1=swap+ .port_swap = 0, //0=normal, 1=swap+ .lane_reverse = 0, //0=normal, 1=swap+};++static struct lcd_power_ctrl_s lcd_power_ctrl = {+ .power_on_step = {+ {+ .type = LCD_POWER_TYPE_CPU,+ .index = 0, /* point to cpu_gpio[] struct */+ .value = 1, /* 0=output_low, 1=output_high, 2=input */+ .delay = 20, /* unit: ms */+ },+ {+ .type = LCD_POWER_TYPE_SIGNAL,+ .delay = 0, /* unit: ms */+ },+ {+ .type = LCD_POWER_TYPE_MAX, /* ending flag */+ },+ },+ .power_off_step = {+ {+ .type = LCD_POWER_TYPE_SIGNAL,+ .delay = 20, /* unit: ms */+ },+ {+ .type = LCD_POWER_TYPE_CPU,+ .index = 0, /* point to cpu_gpio[] struct */+ .value = 0, /* 0=output_low, 1=output_high, 2=input */+ .delay = 100, /* unit: ms */+ },+ {+ .type = LCD_POWER_TYPE_MAX, /* ending flag */+ },+ },+};++struct lcd_config_s lcd_config_dft = {+ .lcd_mode = LCD_MODE_TV,+ .lcd_key_valid = 0,+ .lcd_basic = {+ .model_name = "default",+ .lcd_type = LCD_TYPE_MAX, //LCD_TTL /LCD_LVDS/LCD_VBYONE+ .lcd_bits = 8,+ .h_active = 1920,+ .v_active = 1080,+ .h_period = 2200,+ .v_period = 1125,++ .screen_width = 16,+ .screen_height = 9,+ },++ .lcd_timing = {+ .clk_auto = 1,+ .lcd_clk = 60,+ .ss_level = 0,+ .fr_adjust_type = 0,++ .hsync_width = 44,+ .hsync_bp = 148,+ .hsync_pol = 0,+ .vsync_width = 5,+ .vsync_bp = 36,+ .vsync_pol = 0,+ },++ .lcd_control = {+ .lvds_config = &lcd_lvds_config,+ .vbyone_config = &lcd_vbyone_config,+ },+ .lcd_power = &lcd_power_ctrl,+ .pinmux_set = {{0, 0xc0000000}, {LCD_PINMUX_END, 0x0}},+ .pinmux_clr = {{LCD_PINMUX_END, 0x0}},+};++#ifdef CONFIG_AML_LCD_EXTERN+static char lcd_ext_gpio[LCD_EXTERN_GPIO_NUM_MAX][LCD_EXTERN_GPIO_LEN_MAX] = {+ "invalid", /* ending flag */+};++#define LCD_EXTERN_NAME "ext_default"+#define LCD_EXTERN_CMD_SIZE 9+static unsigned char init_on_table[LCD_EXTERN_INIT_TABLE_MAX] = {+ 0x00, 0x20, 0x01, 0x02, 0x00, 0x40, 0xFF, 0x00, 0x00,+ 0x00, 0x80, 0x02, 0x00, 0x40, 0x62, 0x51, 0x73, 0x00,+ 0x00, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,+ 0x00, 0xC1, 0x05, 0x0F, 0x00, 0x08, 0x70, 0x00, 0x00,+ 0x00, 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,+ 0x00, 0x3D, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,+ 0x00, 0xED, 0x0D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,+ 0x00, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, /* delay 10ms */+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ending */+};++static unsigned char init_off_table[LCD_EXTERN_INIT_TABLE_MAX] = {+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ending */+};++struct lcd_extern_config_s ext_config_dtf = {+ .lcd_ext_key_valid = 0,+ .index = LCD_EXTERN_INDEX_INVALID,+ .type = LCD_EXTERN_MAX, /* LCD_EXTERN_I2C, LCD_EXTERN_SPI, LCD_EXTERN_MAX */+ .status = 0, /* 0=disable, 1=enable */+ .i2c_addr = 0x1c, /* 7bit i2c address */+ .i2c_addr2 = 0xff, /* 7bit i2c address, 0xff for none */+ .i2c_bus = LCD_EXTERN_I2C_BUS_D, /* LCD_EXTERN_I2C_BUS_AO, LCD_EXTERN_I2C_BUS_A/B/C/D */+ .spi_gpio_cs = 0,+ .spi_gpio_clk = 1,+ .spi_gpio_data = 2,+ .spi_clk_freq = 0, /* hz */+ .spi_clk_pol = 0,+ .cmd_size = LCD_EXTERN_CMD_SIZE,+ .table_init_on = init_on_table,+ .table_init_off = init_off_table,+};+#endif++struct bl_config_s bl_config_dft = {+ .name = "default",+ .bl_key_valid = 0,++ .level_default = 100,+ .level_min = 10,+ .level_max = 255,+ .level_mid = 128,+ .level_mid_mapping = 128,+ .level = 0,++ .method = BL_CTRL_MAX,+ .power_on_delay = 200,+ .power_off_delay = 200,++ .en_gpio = 0xff,+ .en_gpio_on = 1,+ .en_gpio_off = 0,++ .bl_pwm = NULL,+ .bl_pwm_combo0 = NULL,+ .bl_pwm_combo1 = NULL,+ .pwm_on_delay = 10,+ .pwm_off_delay = 10,++ .pinmux_set = {{4, 0x00010000}, {LCD_PINMUX_END, 0x0}},+ .pinmux_clr = {{4, 0x00008000}, {3, 0x00200000}, {LCD_PINMUX_END, 0x0}},+};++void lcd_config_bsp_init(void)+{+ int i, j;++ for (i = 0; i < LCD_CPU_GPIO_NUM_MAX; i++) {+ if (strcmp(lcd_cpu_gpio[i], "invalid") == 0)+ break;+ strcpy(lcd_power_ctrl.cpu_gpio[i], lcd_cpu_gpio[i]);+ }+ for (j = i; j < LCD_CPU_GPIO_NUM_MAX; j++)+ strcpy(lcd_power_ctrl.cpu_gpio[j], "invalid");+ for (i = 0; i < BL_GPIO_NUM_MAX; i++) {+ if (strcmp(lcd_bl_gpio[i], "invalid") == 0)+ break;+ strcpy(bl_config_dft.gpio_name[i], lcd_bl_gpio[i]);+ }+ for (j = i; j < BL_GPIO_NUM_MAX; j++)+ strcpy(bl_config_dft.gpio_name[j], "invalid");++#ifdef CONFIG_AML_LCD_EXTERN+ for (i = 0; i < LCD_EXTERN_GPIO_NUM_MAX; i++) {+ if (strcmp(lcd_ext_gpio[i], "invalid") == 0)+ break;+ strcpy(ext_config_dtf.gpio_name[i], lcd_ext_gpio[i]);+ }+ for (j = i; j < LCD_EXTERN_GPIO_NUM_MAX; j++)+ strcpy(ext_config_dtf.gpio_name[j], "invalid");++ strcpy(ext_config_dtf.name, LCD_EXTERN_NAME);+#endif+}diff --git a/drivers/display/osd/osd_hw.c b/drivers/display/osd/osd_hw.cold mode 100644new mode 100755index f2f8f7d..415a23f--- a/drivers/display/osd/osd_hw.c+++ b/drivers/display/osd/osd_hw.c@@ -274,7 +274,7 @@ static void osd_check_scan_mode(void) vmode = vout_get_current_vmode(); #endif switch (vmode) {- case VMODE_LCD:+ //case VMODE_LCD: case VMODE_480I: case VMODE_480CVBS: case VMODE_576I:@@ -360,7 +360,7 @@ int osd_set_scan_mode(u32 index) osd_hw.scan_mode = SCAN_MODE_PROGRESSIVE; osd_hw.scale_workaround = 0; switch (vmode) {- case VMODE_LCD:+ //case VMODE_LCD: case VMODE_480I: case VMODE_480CVBS: case VMODE_576I:@@ -972,7 +972,7 @@ void osd_get_window_axis_hw(u32 index, s32 *x0, s32 *y0, s32 *x1, s32 *y1) vmode = vout_get_current_vmode(); #endif switch (vmode) {- case VMODE_LCD:+ //case VMODE_LCD: case VMODE_480I: case VMODE_480CVBS: case VMODE_576I:@@ -1001,7 +1001,7 @@ void osd_set_window_axis_hw(u32 index, s32 x0, s32 y0, s32 x1, s32 y1) vmode = vout_get_current_vmode(); #endif switch (vmode) {- case VMODE_LCD:+ //case VMODE_LCD: case VMODE_480I: case VMODE_480CVBS: case VMODE_576I:diff --git a/drivers/display/vout/vout.c b/drivers/display/vout/vout.cold mode 100644new mode 100755index d3a586f..1875eb5--- a/drivers/display/vout/vout.c+++ b/drivers/display/vout/vout.c@@ -161,8 +161,8 @@ static const vout_set_t vout_sets[] = { { /* VMODE_LCD */ .name = "panel", .mode = VMODE_LCD,- .width = 1280,- .height = 720,+ .width = 1920,+ .height = 1080, }, { /* VMODE_640x480p60hz */ .name = "640x480p60hz",@@ -447,6 +447,9 @@ static int get_window_axis(int *axis) { int ret = 0; char *mode = getenv("outputmode");+#ifdef CONFIG_AML_LCD+ struct aml_lcd_drv_s *lcd_drv = aml_lcd_get_driver();+#endif if (strncmp(mode, "480i", 4) == 0 || strcmp(mode, "480cvbs") == 0) { axis[0] = getenv_int("480i_x", 0);@@ -498,6 +501,15 @@ static int get_window_axis(int *axis) axis[1] = getenv_int("4k2ksmpte_y", 0); axis[2] = getenv_int("4k2ksmpte_w", 4096); axis[3] = getenv_int("4k2ksmpte_h", 2160);+#ifdef CONFIG_AML_LCD+ } else if (strncmp(mode, "panel",5) == 0) {+ axis[0] = getenv_int("panel_x", 0);+ axis[1] = getenv_int("panel_y", 0);+ axis[2] = getenv_int("panel_w",+ lcd_drv->lcd_config->lcd_basic.h_active);+ axis[3] = getenv_int("panel_h",+ lcd_drv->lcd_config->lcd_basic.v_active);+#endif } else { axis[0] = getenv_int("1080p_x", 0); axis[1] = getenv_int("1080p_y", 0);-- 1.7.9.5
6.3 vendor/amlogic/frameworks
From 9a874eba2d67edc3299ee08b92f22d9768525bbe Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Wed, 1 Nov 2017 11:51:09 +0800Subject: [PATCH] show lcd 1080pcommonubootvendor/amlogic/frameworksvendor/amlogic/apps/DroidTvSettings--- .../java/com/droidlogic/app/OutputModeManager.java | 24 ++++++++++++++++++++ services/systemcontrol/DisplayMode.cpp | 10 +++++++- services/systemcontrol/DisplayMode.h | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) mode change 100644 => 100755 core/java/com/droidlogic/app/OutputModeManager.java mode change 100644 => 100755 services/systemcontrol/DisplayMode.cpp mode change 100644 => 100755 services/systemcontrol/SystemControl.cppdiff --git a/core/java/com/droidlogic/app/OutputModeManager.java b/core/java/com/droidlogic/app/OutputModeManager.javaold mode 100644new mode 100755index d4b5e58..87c9598--- a/core/java/com/droidlogic/app/OutputModeManager.java+++ b/core/java/com/droidlogic/app/OutputModeManager.java@@ -189,6 +189,22 @@ public class OutputModeManager { } }+ public void toggleLcdMode() {+ if (isOutputmodeLcd()) {+ //writeSysfs(DISPLAY_MODE, "1080p60hz");+ mSystenControl.setBootenv(ENV_IS_BEST_MODE, "true");+ if (SystemControlManager.USE_BEST_MODE) {+ setOutputMode(getBestMatchResolution());+ } else {+ setOutputMode(getHighestMatchResolution());+ }+ } else {+ //writeSysfs(DISPLAY_MODE, "panel");+ mSystenControl.setBootenv(ENV_IS_BEST_MODE, "false");+ setOutputMode("panel");+ }+ }+ public void setDeepColorMode() { if (isDeepColor()) { mSystenControl.setProperty(PROP_DEEPCOLOR, "false");@@ -446,6 +462,14 @@ public class OutputModeManager { return Boolean.parseBoolean(mSystenControl.getBootenv(ENV_IS_BEST_MODE, "true")); }+ public boolean isOutputmodeLcd() {+ String status = readSysfs(DISPLAY_MODE);+ if ("panel".equals(status))+ return true;+ else+ return false;+ }+ public boolean isDeepColor() { return getPropertyBoolean(PROP_DEEPCOLOR, false); }diff --git a/services/systemcontrol/DisplayMode.cpp b/services/systemcontrol/DisplayMode.cppold mode 100644new mode 100755index 5b28975..3354b5a--- a/services/systemcontrol/DisplayMode.cpp+++ b/services/systemcontrol/DisplayMode.cpp@@ -434,6 +434,7 @@ void DisplayMode::setSourceDisplay(output_mode_state state) { } else { getBootEnv(UBOOTENV_OUTPUTMODE, outputmode); }+ getBootEnv(UBOOTENV_OUTPUTMODE, outputmode); //if the tv don't support current outputmode,then switch to best outputmode if (HDMI_SINK_TYPE_NONE == data.sinkType) {@@ -1187,7 +1188,10 @@ void DisplayMode::updateDeepColor(bool cvbsMode, output_mode_state state, const pSysWrite->readSysfs(DISPLAY_HDMI_COLOR_ATTR, attr); if (strstr(attr, colorAttribute) == NULL) { SYS_LOGI("set DeepcolorAttr value is different from attr sysfs value\n");- pSysWrite->writeSysfs(SYSFS_DISPLAY_MODE, "null");+ char uboot_outputmode[MODE_LEN] = {0};+ getBootEnv(UBOOTENV_OUTPUTMODE, uboot_outputmode);+ if (strncmp(uboot_outputmode, "panel", 5))+ pSysWrite->writeSysfs(SYSFS_DISPLAY_MODE, "null"); pSysWrite->writeSysfs(DISPLAY_HDMI_COLOR_ATTR, colorAttribute); } else { SYS_LOGI("cur deepcolor attr value is equals to colorAttribute, Do not need set it\n");@@ -1292,6 +1296,10 @@ void DisplayMode::getPosition(const char* curMode, int *position) { strcpy(keyValue, "4k2ksmpte"); defaultWidth = FULL_WIDTH_4K2KSMPTE; defaultHeight = FULL_HEIGHT_4K2KSMPTE;+ } else if (strstr(curMode, "panel")) {+ strcpy(keyValue, MODE_1080P_PREFIX);+ defaultWidth = FULL_WIDTH_1080;+ defaultHeight = FULL_HEIGHT_1080; } else { strcpy(keyValue, MODE_1080P_PREFIX); defaultWidth = FULL_WIDTH_1080;diff --git a/services/systemcontrol/DisplayMode.h b/services/systemcontrol/DisplayMode.hindex eb6d491..0ecad92 100644--- a/services/systemcontrol/DisplayMode.h+++ b/services/systemcontrol/DisplayMode.h@@ -59,7 +59,7 @@ using namespace android; #define DESITY_2160P "480" #define DEFAULT_EDID_CRCHEAD "checkvalue: "-#define DEFAULT_OUTPUT_MODE "480p60hz"+#define DEFAULT_OUTPUT_MODE "1080p60hz" #define DISPLAY_CFG_FILE "/system/etc/mesondisplay.cfg" #define DISPLAY_FB0 "/dev/graphics/fb0" #define DISPLAY_FB1 "/dev/graphics/fb1"diff --git a/services/systemcontrol/SystemControl.cpp b/services/systemcontrol/SystemControl.cppold mode 100644new mode 100755-- 1.7.9.5
6.4 vendor/amlogic/apps/DroidTvSettings
From 6217c2e086bbfffe5a3d51de2bcfbb0721079286 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Thu, 2 Nov 2017 15:43:46 +0800Subject: [PATCH 2/2] show lcd 1080pcommonubootvendor/amlogic/frameworksvendor/amlogic/apps/DroidTvSettings--- res/values/strings.xml | 1 + .../tv/settings/display/DisplayFragment.java | 0 .../settings/display/outputmode/OutputUiManager.java | 9 +++++++++ .../display/outputmode/OutputmodeActivity.java | 20 +++++++++++++++++--- 4 files changed, 27 insertions(+), 3 deletions(-) mode change 100644 => 100755 src/com/droidlogic/tv/settings/display/DisplayFragment.java mode change 100644 => 100755 src/com/droidlogic/tv/settings/display/outputmode/OutputUiManager.java mode change 100644 => 100755 src/com/droidlogic/tv/settings/display/outputmode/OutputmodeActivity.javadiff --git a/res/values/strings.xml b/res/values/strings.xmlindex 5c40801..f2fd6df 100644--- a/res/values/strings.xml+++ b/res/values/strings.xml@@ -16,6 +16,7 @@ <string name="device_colorattribute">Format and Depth</string> <string name="device_outputmode_deep_color">Color Space & Deep Color Settings</string> <string name="device_outputmode_auto">Auto switch to best resolution</string>+ <string name="device_outputmode_lcd">Switch to lcd</string> <string name="device_outputmode_deepcolor">deep color mode</string> <string name="device_outputmode_confirm_mode">Confirm turn off deep color mode</string> <string name="device_outputmode_confirm_deepcolor">Confirm turn on deep color mode</string>diff --git a/src/com/droidlogic/tv/settings/display/DisplayFragment.java b/src/com/droidlogic/tv/settings/display/DisplayFragment.javaold mode 100644new mode 100755diff --git a/src/com/droidlogic/tv/settings/display/outputmode/OutputUiManager.java b/src/com/droidlogic/tv/settings/display/outputmode/OutputUiManager.javaold mode 100644new mode 100755index f1e8632..010442a--- a/src/com/droidlogic/tv/settings/display/outputmode/OutputUiManager.java+++ b/src/com/droidlogic/tv/settings/display/outputmode/OutputUiManager.java@@ -281,10 +281,19 @@ public class OutputUiManager { public void change2BestMode() { mOutputModeManager.setBestMode(null); }++ public void toggleLcdMode() {+ mOutputModeManager.toggleLcdMode();+ }+ public boolean isBestOutputmode(){ return mOutputModeManager.isBestOutputmode(); }+ public boolean isOutputmodeLcd(){+ return mOutputModeManager.isOutputmodeLcd();+ }+ public void change2DeepColorMode() { mOutputModeManager.setDeepColorMode(); }diff --git a/src/com/droidlogic/tv/settings/display/outputmode/OutputmodeActivity.java b/src/com/droidlogic/tv/settings/display/outputmode/OutputmodeActivity.javaold mode 100644new mode 100755index 26aa703..58f4b53--- a/src/com/droidlogic/tv/settings/display/outputmode/OutputmodeActivity.java+++ b/src/com/droidlogic/tv/settings/display/outputmode/OutputmodeActivity.java@@ -39,6 +39,7 @@ import java.util.TimerTask; public class OutputmodeActivity extends DialogActivity implements ActionAdapter.Listener, OnClickListener, OnFocusChangeListener{ private final static String BEST_RESOLUTION = "best resolution";+ private final static String OUTPUTMODE_LCD = "outputmode lcd"; private final static String DEEP_COLOR = "deep_color"; private final static String COLOR_SPACE_DEEP_COLOR = "color space deep color"; private final static String DOLBY_VISION = "dolby_vision";@@ -70,7 +71,6 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);- mOutputUiManager = new OutputUiManager(this); mContentFragment = createMainMenuContentFragment(); mActionFragment = ActionFragment.newInstance(getMainActions());@@ -101,6 +101,8 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. if (mode.equals(BEST_RESOLUTION)) { mOutputUiManager.change2BestMode();+ } else if (mode.equals(OUTPUTMODE_LCD)) {+ mOutputUiManager.toggleLcdMode(); } else if (mode.equals(COLOR_SPACE_DEEP_COLOR)) { Intent intent = new Intent(OutputmodeActivity.this,ColorAttributeActivity.class); startActivity(intent);@@ -146,10 +148,13 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. if (mOutputUiManager.getUiMode().equals(mOutputUiManager.HDMI_MODE)) { String best_resolution_description;+ String outputmode_lcd_description; String deep_color_description; String dolby_vision_description; best_resolution_description = mOutputUiManager.isBestOutputmode() ? getString(R.string.captions_display_on) : getString(R.string.captions_display_off);+ outputmode_lcd_description = mOutputUiManager.isOutputmodeLcd() ?+ "on" : "off"; deep_color_description = mOutputUiManager.getCurrentColorAttribute(); dolby_vision_description = mOutputUiManager.isDolbyVisionEnable() ? getString(R.string.captions_display_on) : getString(R.string.captions_display_off);@@ -159,6 +164,9 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. Action resolution = constructAction(BEST_RESOLUTION, getString(R.string.device_outputmode_auto), " " + best_resolution_description);+ Action outputmode_lcd = constructAction(OUTPUTMODE_LCD, getString(R.string.device_outputmode_lcd),+ " " + outputmode_lcd_description);+ Action deep_color = constructAction(COLOR_SPACE_DEEP_COLOR, getString(R.string.device_outputmode_deep_color), " " + deep_color_description);@@ -171,6 +179,7 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. deep_color.setEnabled(false); } actions.add(resolution);+ actions.add(outputmode_lcd); actions.add(deep_color); //only S912 as Mbox, T962E as Mbox, can display this options //T962E as TV and T962X, display in Settings-->Display list.@@ -232,8 +241,13 @@ public class OutputmodeActivity extends DialogActivity implements ActionAdapter. if (mOutputUiManager.getOutputmodeTitleList().size() <= 0) { tx_content.setText("Get outputmode empty!"); } else if (mOutputUiManager.getCurrentModeIndex() < mOutputUiManager.getOutputmodeTitleList().size()) {- tx_content.setText(getResources().getString(R.string.device_outputmode_change)- + " " +mOutputUiManager.getOutputmodeTitleList().get(mOutputUiManager.getCurrentModeIndex()));+ if (!mOutputUiManager.isOutputmodeLcd()) {+ tx_content.setText(getResources().getString(R.string.device_outputmode_change)+ + " " +mOutputUiManager.getOutputmodeTitleList().get(mOutputUiManager.getCurrentModeIndex()));+ } else {+ tx_content.setText(getResources().getString(R.string.device_outputmode_change)+ + " lcd");+ } } }-- 1.9.1
7 休眠\关机时自动关闭wifi
amlogic
7.1 uboot
From 753452c9c6b7066798c9e5e819df30d665e6cf83 Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Mon, 25 Dec 2017 15:19:20 +0800Subject: [PATCH] disable wifi when sleepubootframeworks/base--- .../gxl_p281_v1/firmware/scp_task/pwr_ctrl.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/board/amlogic/gxl_p281_v1/firmware/scp_task/pwr_ctrl.c b/board/amlogic/gxl_p281_v1/firmware/scp_task/pwr_ctrl.cindex 256f718..d1765ed 100644--- a/board/amlogic/gxl_p281_v1/firmware/scp_task/pwr_ctrl.c+++ b/board/amlogic/gxl_p281_v1/firmware/scp_task/pwr_ctrl.c@@ -204,6 +204,9 @@ static unsigned int detect_key(unsigned int suspend_from) } #endif+ aml_update_bits(PREG_PAD_GPIO4_EN_N, 1 << 6, 0);+ aml_update_bits(PREG_PAD_GPIO4_O, 1 << 6, 0);+ /* *wakeup_en = 1;*/ do { #ifdef CONFIG_CEC_WAKEUP-- 1.7.9.5
7.2 frameworks/base
From b9f1da1c796441953bf64f091782a5b10d15f99b Mon Sep 17 00:00:00 2001From: xk <ke.xiao@trigtop.com>Date: Mon, 25 Dec 2017 15:17:50 +0800Subject: [PATCH] disable wifi when sleepubootframeworks/base--- .../android/server/power/PowerManagerService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.javaindex b33f3cf..3a2319b 100644--- a/services/core/java/com/android/server/power/PowerManagerService.java+++ b/services/core/java/com/android/server/power/PowerManagerService.java@@ -84,6 +84,8 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays;+import android.net.wifi.WifiManager;+ import static android.os.PowerManagerInternal.POWER_HINT_INTERACTION; import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP; import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;@@ -1222,6 +1224,13 @@ public final class PowerManagerService extends SystemService return false; }+ final WifiManager mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);+ int isTrigtopWifiEnable = Settings.Global.getInt(mContext.getContentResolver(),+ "isTrigtopWifiEnable", 0);+ if (isTrigtopWifiEnable == 1) {+ mWifiManager.setWifiEnabled(true);+ }+ Trace.traceBegin(Trace.TRACE_TAG_POWER, "wakeUp"); try { switch (mWakefulness) {@@ -1272,6 +1281,16 @@ public final class PowerManagerService extends SystemService return false; }+ final WifiManager mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);+ if (mWifiManager.isWifiEnabled()) {+ Settings.Global.putInt(mContext.getContentResolver(),+ "isTrigtopWifiEnable", 1);+ mWifiManager.setWifiEnabled(false);+ } else {+ Settings.Global.putInt(mContext.getContentResolver(),+ "isTrigtopWifiEnable", 0);+ }+ Trace.traceBegin(Trace.TRACE_TAG_POWER, "goToSleep"); try { switch (reason) {-- 1.7.9.5
8 修复第三方APP访问外部存储限制
8.1 system/vold
commit bee9e8812e365da9b8f9dbdbbd0bc8a48852f22bAuthor: jiangwei <jiangwei@netxeon.com>Date: Thu Dec 14 10:59:56 2017 +0800/system/vold 修复第三方APP访问外部存储 主要修复不能在外部存储进行写操作。diff --git a/PublicVolume.cpp b/PublicVolume.cppold mode 100644new mode 100755index 1925ef3..4325081--- a/PublicVolume.cpp+++ b/PublicVolume.cpp@@ -251,6 +251,7 @@ status_t PublicVolume::doMount() { "-u", "1023", // AID_MEDIA_RW "-g", "1023", // AID_MEDIA_RW "-U", std::to_string(getMountUserId()).c_str(),+ "-w", mRawPath.c_str(), stableName.c_str(), NULL)) {
9 修复Remote+遥控器MIC不能使用
9.1
From fe9b7d7fc20864332daa971f40e1aff388d03324 Mon Sep 17 00:00:00 2001From: lhh <hh.li@netxeon.com>Date: Mon, 4 Dec 2017 18:50:46 +0800Subject: [PATCH] Fixed Remote R5 no sound--- sound/usb/quirks.c | 11 +++++++++++ 1 file changed, 11 insertions(+)diff --git a/sound/usb/quirks.c b/sound/usb/quirks.cindex 827d404..d28e171 100644--- a/sound/usb/quirks.c+++ b/sound/usb/quirks.c@@ -870,6 +870,14 @@ static int quattro_skip_setting_quirk(struct snd_usb_audio *chip, altno, iface, chip->setup); return 0; /* keep this altsetting */ }+static int snd_usb_remote_plus_boot_quirk(struct usb_device *dev)+{+ u8 buf[1] = {0x0};+ pr_info("[USB Quirk] Remote+ set unmute!\n");+ return snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), UAC_SET_CUR,+ USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,+ UAC_FU_MUTE << 8, 3 << 8, buf, 1);+} static int audiophile_skip_setting_quirk(struct snd_usb_audio *chip, int iface,@@ -1001,6 +1009,9 @@ int snd_usb_apply_boot_quirk(struct usb_device *dev, return snd_usb_fasttrackpro_boot_quirk(dev); case USB_ID(0x047f, 0xc010): /* Plantronics Gamecom 780 */ return snd_usb_gamecon780_boot_quirk(dev);+ case USB_ID(0x1915, 0x0163): /* Remote+ */+ return snd_usb_remote_plus_boot_quirk(dev);+ } return 0;-- 1.7.9.5
阅读全文
0 0
- patch
- Patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch.....
- Patch
- patch
- 2017-12-18
- 取消input(number类型)输入框上下按钮
- Pandas-Series
- Nginx配置详解
- 作业4--线性表类型定义与顺序表操作
- PATCH
- 简单的MS COCO数据集下载方法
- 字符数组内容逆序输出
- 图的色数问题整理(未完待续......)
- 环海陆港分析国际外汇黄金最新消息
- Apache 配置访问日志
- JVM 内存结构图
- .NET日常之枚举
- 如何保证kafka 的消息机制