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 &amp; 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
原创粉丝点击