1.2Android 5.1-7.1 高通驱动修改
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 高通驱动修改相关推荐
- csr8675高通qcc5125修改蓝牙的usb声卡的ID方法
csr8675和高通qcc5125修改蓝牙的usb声卡ID方法 分两种,csr和qcc,实际都是高通的了.简单区分来说,就是使用的烧录器不一样. spi烧录器:csr8670.8675-这些都适用 ① ...
- 360手机驱动 360手机高通驱动 360手机驱动报错 360手机USB驱动
360手机驱动 360手机高通驱动 360手机驱动报错 360手机USB驱动 [工具下载] 参考:360手机-360刷机360刷机包twrp.root 刷机包+工具下载地址:https://360 ...
- 高通驱动树中的GPIO详解
高通驱动树中的GPIO详解 reference:https://blog.csdn.net/baidu_37503452/article/details/80257441 Drive Strength ...
- 高通驱动实现 GPIO 中断上报键值
高通驱动实现 GPIO 中断上报键值 一. 确认keycode值,同步修改上层键值映射表 Tips 1: 选择一个好的键值的好处 Tips 2: 如何确认驱动代是否ok 二. 驱动代码编写 三.代码调 ...
- 高通驱动9008安装_高通snapdragon888的性能有多强大
按照年底发布的传统,高通公司于2020年12月1日晚上正式发布了新一代旗舰5G手机平台小龙888.关于这一命名,高通公司总裁安孟说:" 8'代表Snapdragon系列的顶级平台,代表了旗舰 ...
- 高通驱动9008安装_小米10/Redmi K30 Pro系列已支持GPU驱动独立更新,还能双版本切换...
高通在去年末发布的那颗骁龙865处理器,一大功能升级就是支持GPU驱动独立更新.手机厂商可以通过Google Play或者自己的应用商店向用户推送新版本的GPU驱动更新,大大地简化了这类系统关键组件的 ...
- 高通驱动开发参考(二)
第1章 Driver相关模块介绍 1.1 REX简介 虽说目前QSC60x5平台上采用L4操作系统,REX只是L4上面的一个Task.但高通为了开发的兼容性,提供的API仍然采用老的一套接口(可能内部 ...
- 编译问题追踪 :高通驱动移植 <utils/Log.h>问题
问题点 找不到 <utils/Log.h> [ 0% 28/15711] target thumb C: libmmcamera_gc5035_otp_eeprom_32 <= ve ...
- 高通驱动9008安装_赛多利斯Sartorius-ambr? 250 高通量灌注培养系统
Sartorius-ambr® 250 高通量灌注培养系统 新型多级并联生物反应器,快速跟踪强化细胞培养工艺 ambr® 250高通量灌注培养生物反应器作为一种平行的生物反应器系统,使用100 – 2 ...
- 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!
嗨喽,大家好呀,今天给大家讲讲重装系统. 大家都知道,导致电脑出现问题不仅仅有驱动,往往还有 Windows 系统. 虽然驱动问题上我们驱动人生是专业的, 但是在系统问题上因为专业方向不同,我们只能建 ...
最新文章
- 七天学会「股票数据分析软件」的开发(下)
- input 事件_14. 教你零基础搭建小程序:小程序事件绑定(1)
- C#中StringBuilder类的使用
- 8个我希望早点意识到的学生思维
- jQuery Dom 操作,动态生成dom,绑定事件
- linux防ddos 软件下载,linux下防DDOS工具
- JS 动态创建元素、删除元素、替换元素、修改元素
- 骁龙865+65W闪充!realme 真我X50 Pro 5G正式全球发布
- 【kafka】kafka LogSegmentOffsetOverflowException segment overflow Detected offset overflow
- 自从在 IDEA 中用了热部署神器 JRebel,开发效率提升了 10 倍!
- css3中word-wrap与wrod-break的区别
- Adobe Photoshop CC2018软件安装教程
- 健身运动App需求分析
- Badboy内置浏览器,提示脚本错误解决方法
- 家庭理财,轻松记账修改收支记录这样操作
- 山水之道第五境——精灵的天地大阵
- 一个完善的ActiveX Web控件教程
- 一个集成ssh和vcn和其他的工具MobaXterm
- java实例化类之后如何赋值_深入理解Java对象的创建过程:类的初始化与实例化...
- Google Voice的简单介绍。(一点都不简单)
热门文章
- PPT设计网站 驼峰设计
- Unity Behavior Designer(行为树)Abort Type(中断类型)
- 计算机中英文打字文章,中英文打字练习文章优美范文.doc
- c++矩阵转置_线性代数(Gelbert)对称矩阵
- .net core全开源商城源码,支持可视化布局小程序,前后端分离,跨平台运行
- idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
- 阿铭Linux_网站维护学习笔记20190412
- 投屏后能在电脑操作手机吗 手机投屏电脑操作手机软件
- word 批量转 pdf
- C#注入DLL-C#注入器