1:打开驱动日志

--- a/kernel/arch/arm/configs/msm8909-1gb_defconfig
+++ b/kernel/arch/arm/configs/msm8909-1gb_defconfig
@@ -614,3 +614,5 @@ CONFIG_MSM_CORE_CTL_HELPER=yCONFIG_HAVE_ARCH_SECCOMP_FILTER=yCONFIG_SECCOMP=yCONFIG_SECCOMP_FILTER=y
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y

2:移除emmc版本检查

diff --git a/kernel/drivers/mmc/core/mmc.c b/kernel/drivers/mmc/core/mmc.c
old mode 100644
new mode 100755
index 4ede8e3..4df1712
--- a/kernel/drivers/mmc/core/mmc.c
+++ b/kernel/drivers/mmc/core/mmc.c
@@ -328,12 +328,13 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)}card->ext_csd.rev = ext_csd[EXT_CSD_REV];
-       if (card->ext_csd.rev > 7) {
+       //richal add:disable emmc version check
+       /*if (card->ext_csd.rev > 7) {pr_err("%s: unrecognised EXT_CSD revision %d\n",mmc_hostname(card->host), card->ext_csd.rev);err = -EINVAL;goto out;
-       }
+       }*//* fixup device after ext_csd revision field is updated */mmc_fixup_device(card, mmc_fixups);

3:在系统崩溃时关闭qload mode

diff --git a/kernel/drivers/power/reset/msm-poweroff.c b/kernel/drivers/power/reset/msm-poweroff.c
old mode 100644
new mode 100755
index b0aa6b0..854c8db
--- a/kernel/drivers/power/reset/msm-poweroff.c
+++ b/kernel/drivers/power/reset/msm-poweroff.c
@@ -63,7 +63,7 @@ static void *emergency_dload_mode_addr;static bool scm_dload_supported;static int dload_set(const char *val, struct kernel_param *kp);
-static int download_mode = 1;
+static int download_mode = 0;  //richal changed:disable qdload modemodule_param_call(download_mode, dload_set, param_get_int,&download_mode, 0644);static int panic_prep_restart(struct notifier_block *this,

4:打开关机充电功能

修改/android/bootable/bootloader/lk/app/aboot/aboot.c


unsigned char *update_cmdline(const char * cmdline)
{。。。。省略代码if (boot_into_recovery && gpt_exists)cmdline_len += strlen(secondary_gpt_enable);if (boot_into_ffbm) {cmdline_len += strlen(androidboot_mode);cmdline_len += strlen(ffbm_mode_string);/* reduce kernel console messages to speed-up boot */cmdline_len += strlen(loglevel);} else if (boot_reason_alarm) {cmdline_len += strlen(alarmboot_cmdline);} else if (/*device.charger_screen_enabled &&*/    //注释掉target_pause_for_battery_charge()) {pause_at_bootup = 1;cmdline_len += strlen(battchg_pause);}。。。。省略代码
}

在代码中修改 device.charger_screen_enabled 即可。

低版本 可能加个

target_build_variant_user()  在User版本才能进入关机充电debug正常

此方法在 android/bootable/bootloader/lk/target/init.c 下

5:打开lk串口日志

diff --git a/bootable/bootloader/lk/project/msm8909.mk b/bootable/bootloader/lk/project/msm8909.mk
old mode 100644
new mode 100755
index afc40f6..007499a
--- a/bootable/bootloader/lk/project/msm8909.mk
+++ b/bootable/bootloader/lk/project/msm8909.mk
@@ -20,7 +20,7 @@ ENABLE_PWM_SUPPORT := true#DEFINES += WITH_DEBUG_DCC=1DEFINES += WITH_DEBUG_LOG_BUF=1
-DEFINES += WITH_DEBUG_UART=0
+DEFINES += WITH_DEBUG_UART=1#DEFINES += WITH_DEBUG_FBCON=1DEFINES += DEVICE_TREE=1#DEFINES += MMC_BOOT_BAM=1

6:高通8909 驱动修改充电电流限制[kernel]

定位文件:kernel/arch/arm/boot/dts/qcom/msm-pm8909.dtsi

 pm8909_chg: qcom,charger {....qcom,ibatsafe-ma = <1000>;  // 1000 1Aqcom,thermal-mitigation = <1000 720 630 0>;  //1000A//qcom,ibatsafe-ma = <1440>;  // 1.5A//qcom,thermal-mitigation = <1440720 630 0>;  //1.5Aqcom,cool-bat-decidegc = <100>;qcom,warm-bat-decidegc = <450>;qcom,cool-bat-mv = <4100>;

或者直接修改

kernel/drivers/power/qpnp-linear-charger.c

 return rc;
}#define QPNP_LBC_IBATMAX_MIN    90
#define QPNP_LBC_IBATMAX_MAX    1000  //最大充电电流限制
/** Set maximum current limit from charger* ibat =  System current + charging current*/
static int qpnp_lbc_ibatmax_set(struct qpnp_lbc_chip *chip, int chg_current)

7:bootloader中添加emergency download mode (组合按键开机)

平台  MSM8909

在完成了寄存器初始化、display 设备初始化之后,系统准备开始启动,在aboot.c文件中

void aboot_init(const struct app_descriptor *app)
{unsigned reboot_mode = 0;bool boot_into_fastboot = false;/* Setup page size information for nand/emmc reads */if (target_is_emmc_boot()){page_size = 2048;page_mask = page_size - 1;}else{page_size = flash_page_size();page_mask = page_size - 1;}ASSERT((MEMBASE + MEMSIZE) > MEMBASE);read_device_info(&device);target_serialno((unsigned char *) sn_buf);dprintf(SPEW,"serial number: %s\n",sn_buf);memset(display_panel_buf, '\0', MAX_PANEL_BUF_SIZE);/* Check if we should do something other than booting up */<span style="color:#000099;">if (keys_get_state(KEY_VOLUMEUP) && keys_get_state(KEY_VOLUMEDOWN))
//音量上下键选择进入emergency download mode,但在此之前需要配置这两个GPIO{dprintf(ALWAYS,"dload mode key sequence detected\n");if (set_download_mode(EMERGENCY_DLOAD)){dprintf(CRITICAL,"dload mode not supported by target\n");}else{reboot_device(0);dprintf(CRITICAL,"Failed to reboot into dload mode\n");}boot_into_fastboot = true;}</span>if (!boot_into_fastboot){if (keys_get_state(KEY_HOME) || keys_get_state(KEY_VOLUMEUP))boot_into_recovery = 1;if (!boot_into_recovery &&(keys_get_state(KEY_BACK) || keys_get_state(KEY_VOLUMEDOWN)))boot_into_fastboot = true;}

在 target/msm8909/init.c中配置这两个音量键

#define TLMM_VOL_UP_BTN_GPIO    72
#define TLMM_VOL_DOWN_BTN_GPIO  73

配置音量键或者其他按键按下检测

/* Return 1 if vol_up pressed */
static int target_volume_up()
{uint8_t status = 0;gpio_tlmm_config(TLMM_VOL_UP_BTN_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);/* Wait for the configuration to complete.*/thread_sleep(1);/* Get status of GPIO */status = gpio_status(TLMM_VOL_UP_BTN_GPIO);/* Active low signal. */return !status;
}/* Return 1 if vol_down pressed */
uint32_t target_volume_down()
{
#if 1  //启用GPIO口配置的音量上下键uint8_t status = 0;if(TLMM_VOL_DOWN_BTN_GPIO == -1)return 0;gpio_tlmm_config(TLMM_VOL_DOWN_BTN_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);/* Wait for the configuration to complete.*/thread_sleep(1);/* Get status of GPIO */status = gpio_status(TLMM_VOL_DOWN_BTN_GPIO);/* Active low signal. */return !status;
#else/* Volume down button tied in with PMIC RESIN. *///高通默认的音量减键return pm8x41_resin_status();
#endif
}

最后设置紧急QLOAD 下载

int set_download_mode(enum dload_mode mode)
{int ret = 0;ret = scm_dload_mode(mode);pm8x41_clear_pmic_watchdog();return ret;
}

8:高通平台禁用热插拔

根据平台配置的dtsi -  kernel/arch/arm/boot/dts/qcom/msm8909-mtp.dtsi 

 &sdhc_2 {#address-cells = <0>;
+       qcom,nonhotplug;interrupt-parent = <&sdhc_2>;interrupts = <0 1 2>;#interrupt-cells = <1>;
@@ -476,7 +477,7 @@1 &intc 0 221 02 &msm_gpio 38 0>;interrupt-names = "hc_irq", "pwr_irq", "status_irq";
-       cd-gpios = <&msm_gpio 38 0x1>;
+       #cd-gpios = <&msm_gpio 38 0x1>;vdd-supply = <&pm8909_l11>;qcom,vdd-voltage-level = <1800000 2950000>;

9:高通平台电池直冲实时刷新电量

1:电池直冲 则不走内部电量计

一种方式走电量计,另外一种方式走电压值。

定位文件: kernel/arch/arm/boot/dts/qcom/msm-pm8909.dtsi 

  pm8909_bms: qcom,vmbms {spmi-dev-container;compatible = "qcom,qpnp-vm-bms";#address-cells = <1>;#size-cells = <1>;status = "disabled";qcom,v-cutoff-uv = <3400000>;qcom,max-voltage-uv = <4200000>;qcom,r-conn-mohm = <0>;qcom,shutdown-soc-valid-limit = <100>;qcom,low-soc-calculate-soc-threshold = <15>;qcom,low-voltage-calculate-soc-ms = <1000>;qcom,low-soc-calculate-soc-ms = <5000>;qcom,calculate-soc-ms = <20000>;qcom,volatge-soc-timeout-ms = <60000>;qcom,low-voltage-threshold = <3450000>;qcom,s3-ocv-tolerence-uv = <1200>;qcom,s2-fifo-length = <5>;qcom,low-soc-fifo-length = <2>;qcom,bms-vadc = <&pm8909_vadc>;qcom,bms-adc_tm = <&pm8909_adc_tm>;qcom,pmic-revid = <&pm8909_revid>;qcom,force-s3-on-suspend;qcom,force-s2-in-charging;qcom,report-charger-eoc;qcom,resume-soc = <95>;// 添加上报状态 忽略关机时的电压qcom,use-reported-soc;qcom,force-bms-active-on-charger;qcom,ignore-shudown-soc;//add for directlly charge into battery 电池直冲 通过电压实时监测qcom,use-voltage-soc;。。。。忽略

1.2Android 5.1-7.1 高通驱动修改相关推荐

  1. csr8675高通qcc5125修改蓝牙的usb声卡的ID方法

    csr8675和高通qcc5125修改蓝牙的usb声卡ID方法 分两种,csr和qcc,实际都是高通的了.简单区分来说,就是使用的烧录器不一样. spi烧录器:csr8670.8675-这些都适用 ① ...

  2. 360手机驱动 360手机高通驱动 360手机驱动报错 360手机USB驱动

    360手机驱动 360手机高通驱动 360手机驱动报错 360手机USB驱动   [工具下载] 参考:360手机-360刷机360刷机包twrp.root 刷机包+工具下载地址:https://360 ...

  3. 高通驱动树中的GPIO详解

    高通驱动树中的GPIO详解 reference:https://blog.csdn.net/baidu_37503452/article/details/80257441 Drive Strength ...

  4. 高通驱动实现 GPIO 中断上报键值

    高通驱动实现 GPIO 中断上报键值 一. 确认keycode值,同步修改上层键值映射表 Tips 1: 选择一个好的键值的好处 Tips 2: 如何确认驱动代是否ok 二. 驱动代码编写 三.代码调 ...

  5. 高通驱动9008安装_高通snapdragon888的性能有多强大

    按照年底发布的传统,高通公司于2020年12月1日晚上正式发布了新一代旗舰5G手机平台小龙888.关于这一命名,高通公司总裁安孟说:" 8'代表Snapdragon系列的顶级平台,代表了旗舰 ...

  6. 高通驱动9008安装_小米10/Redmi K30 Pro系列已支持GPU驱动独立更新,还能双版本切换...

    高通在去年末发布的那颗骁龙865处理器,一大功能升级就是支持GPU驱动独立更新.手机厂商可以通过Google Play或者自己的应用商店向用户推送新版本的GPU驱动更新,大大地简化了这类系统关键组件的 ...

  7. 高通驱动开发参考(二)

    第1章 Driver相关模块介绍 1.1 REX简介 虽说目前QSC60x5平台上采用L4操作系统,REX只是L4上面的一个Task.但高通为了开发的兼容性,提供的API仍然采用老的一套接口(可能内部 ...

  8. 编译问题追踪 :高通驱动移植 <utils/Log.h>问题

    问题点 找不到 <utils/Log.h> [ 0% 28/15711] target thumb C: libmmcamera_gc5035_otp_eeprom_32 <= ve ...

  9. 高通驱动9008安装_赛多利斯Sartorius-ambr? 250 高通量灌注培养系统

    Sartorius-ambr® 250 高通量灌注培养系统 新型多级并联生物反应器,快速跟踪强化细胞培养工艺 ambr® 250高通量灌注培养生物反应器作为一种平行的生物反应器系统,使用100 – 2 ...

  10. 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!

    嗨喽,大家好呀,今天给大家讲讲重装系统. 大家都知道,导致电脑出现问题不仅仅有驱动,往往还有 Windows 系统. 虽然驱动问题上我们驱动人生是专业的, 但是在系统问题上因为专业方向不同,我们只能建 ...

最新文章

  1. 七天学会「股票数据分析软件」的开发(下)
  2. input 事件_14. 教你零基础搭建小程序:小程序事件绑定(1)
  3. C#中StringBuilder类的使用
  4. 8个我希望早点意识到的学生思维
  5. jQuery Dom 操作,动态生成dom,绑定事件
  6. linux防ddos 软件下载,linux下防DDOS工具
  7. JS 动态创建元素、删除元素、替换元素、修改元素
  8. 骁龙865+65W闪充!realme 真我X50 Pro 5G正式全球发布
  9. 【kafka】kafka LogSegmentOffsetOverflowException segment overflow Detected offset overflow
  10. 自从在 IDEA 中用了热部署神器 JRebel,开发效率提升了 10 倍!
  11. css3中word-wrap与wrod-break的区别
  12. Adobe Photoshop CC2018软件安装教程
  13. 健身运动App需求分析
  14. Badboy内置浏览器,提示脚本错误解决方法
  15. 家庭理财,轻松记账修改收支记录这样操作
  16. 山水之道第五境——精灵的天地大阵
  17. 一个完善的ActiveX Web控件教程
  18. 一个集成ssh和vcn和其他的工具MobaXterm
  19. java实例化类之后如何赋值_深入理解Java对象的创建过程:类的初始化与实例化...
  20. Google Voice的简单介绍。(一点都不简单)

热门文章

  1. PPT设计网站 驼峰设计
  2. Unity Behavior Designer(行为树)Abort Type(中断类型)
  3. 计算机中英文打字文章,中英文打字练习文章优美范文.doc
  4. c++矩阵转置_线性代数(Gelbert)对称矩阵
  5. .net core全开源商城源码,支持可视化布局小程序,前后端分离,跨平台运行
  6. idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
  7. 阿铭Linux_网站维护学习笔记20190412
  8. 投屏后能在电脑操作手机吗 手机投屏电脑操作手机软件
  9. word 批量转 pdf
  10. C#注入DLL-C#注入器