修改mt6357 PMIC 耳机插入中断极性
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、耳机插拔检测二、patch前言在patch之前先讲解一下耳机的三段检测就是耳机插入的检测一、耳机插拔检测见博文https://blog.csdn.net/weixin_43699191/article/details/131127269这个对照自己的原理图即可。二、patch这里硬件为插入出现 高的一个中断 c---a/kernel-4.19/arch/arm/boot/dts/ai6807t_l40mme_32.dtsb/kernel-4.19/arch/arm/boot/dts/ai6807t_l40mme_32.dts -280,7280,7 headset-mode-setting0x5000x50010x1f00x8000x8000x200x44;accdet-plugout-debounce1;accdet-mic-mode1;-headset-eint-level-pol8;headset-eint-level-pol4;headset-three-key-threshold080220400;headset-three-key-threshold-CDD0121192600;headset-four-key-threshold058121192400;diff--git a/kernel-4.19/arch/arm/boot/dts/mt6357.dtsi b/kernel-4.19/arch/arm/boot/dts/mt6357.dtsi index e6d131f7e0b..cb8cde2855d100644---a/kernel-4.19/arch/arm/boot/dts/mt6357.dtsib/kernel-4.19/arch/arm/boot/dts/mt6357.dtsi -13,713,7 accdet-mic-mode1;headset-mode-setting0x5000x50010x1f00x8000x8000x200x44;-headset-eint-level-pol8;headset-eint-level-pol4;headset-use-ap-eint0;headset-eint-num0;headset-eint-trig-mode0;diff--git a/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsi b/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsi index9990bed1d42..fad8730d6ba100644---a/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsib/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsi -13,713,7 accdet-mic-mode1;headset-mode-setting0x5000x50010x1f00x8000x8000x200x44;-headset-eint-level-pol8;headset-eint-level-pol4;headset-use-ap-eint0;headset-eint-num0;headset-eint-trig-mode0;diff--git a/kernel-4.19/sound/soc/codecs/mt6357-accdet.c b/kernel-4.19/sound/soc/codecs/mt6357-accdet.c index b01d249ed35..b1a56dabb56100644---a/kernel-4.19/sound/soc/codecs/mt6357-accdet.cb/kernel-4.19/sound/soc/codecs/mt6357-accdet.c -187,6187,12staticvoidaccdet_init_debounce(void);staticvoidconfig_eint_init_by_mode(void);staticu32get_triggered_eint(void);staticvoidsend_status_event(u32 cable_type,u32 status);/* * 下面两个是修改accdet 中断极性相关 */staticu32 accdet_eint_pol_typeIRQ_TYPE_LEVEL_HIGH;staticvoidaccdet_for_plug_highlow(void);/* global function declaration */inlineu32accdet_read(u32 addr){---a/kernel-4.19/sound/soc/codecs/mt6357-accdet.cb/kernel-4.19/sound/soc/codecs/mt6357-accdet.c -187,6187,12staticvoidaccdet_init_debounce(void);staticvoidconfig_eint_init_by_mode(void);staticu32get_triggered_eint(void);staticvoidsend_status_event(u32 cable_type,u32 status);/* * 下面两个是修改accdet 中断极性相关 */staticu32 accdet_eint_pol_typeIRQ_TYPE_LEVEL_HIGH;staticvoidaccdet_for_plug_highlow(void);/* global function declaration *//* * 下面两个是修改accdet 中断极性相关 */staticu32 accdet_eint_pol_typeIRQ_TYPE_LEVEL_HIGH;staticvoidaccdet_for_plug_highlow(void);/* global function declaration */inlineu32accdet_read(u32 addr){-973,6979,10staticu32get_triggered_eint(void)staticvoideint_polarity_reverse(u32 eint_id){/* global function declaration */inlineu32accdet_read(u32 addr){-973,6979,10staticu32get_triggered_eint(void)staticvoideint_polarity_reverse(u32 eint_id){accdet-accdet_eint_typeIRQ_TYPE_LEVEL_HIGH;pr_info(%s begin!\n,__func__);if(eint_idPMIC_EINT0){if(accdet-cur_eint_stateEINT_PLUG_OUT){if(accdet-accdet_eint_typeIRQ_TYPE_LEVEL_HIGH)-1153,61163,7staticvoideint_work_callback(structwork_struct*work)ACCDET_CMP_PWM_IDLE_SFT,0x7,0x7);disable_accdet();headset_plug_out();accdet_for_plug_highlow();}if(HAS_CAP(accdet-data-caps,ACCDET_AP_GPIO_EINT))-1800,61811,43staticintaccdet_get_dts_data(void)return0;}/* * mt6357的accdet中断使能是低我们硬件电路的accdet插入后是高 * 因此需要修改mt6357的中断触发极性需要修改为高 */staticvoidaccdet_for_plug_highlow(void){if(accdet_eint_pol_typeIRQ_TYPE_LEVEL_HIGH){pr_err(%s LEVEL_HIGH \n,__func__);dump_register();accdet_write(0x231e,accdet_read(0x231e)~0x0444);accdet_write(0x231e,accdet_read(0x231e)|(0x0114));accdet_write(0x230a,accdet_read(0x230a)|(0x013));if(accdet_read(0x232c)(0x78)){pr_err(%s EINT STATE 0x%x BIT 8,9,10 NOT ALL ZERO \n ,__func__,accdet_read(0x232c));dump_register();}else{accdet_write(0x230a,accdet_read(0x230a)(~(0x013)));pr_err(%s we should clear CTRL : 0x%x \n,__func__,accdet_read(0x230a));}if(accdet_read(0x232c)(0X78)){pr_err(%s double check EINT0_STATE bit 8910 not zero \n,__func__);}else{pr_err(%s double check EINT0_STATE bit 8910 is zero ! \n,__func__);}accdet_write(0x2320,accdet_read(0x2320)|(0x0114));accdet_write(0x2194,accdet_read(0x2194)|(0X16));usleep_range(2000,3000);//加条这个accdet_write(0x230a,accdet_read(0x230a)(~(0x013)));//加条这个pr_err(%s AUDENC_ANA_CON6 ox%x \n,__func__,accdet_read(0x2194));}else{accdet_write(0x2320,accdet_read(0x2320)(~(0x0114)));}}staticvoidconfig_digital_init_by_mode(void){unsignedintreg0;-1912,61960,10staticvoidaccdet_init_once(void)}elseif(HAS_CAP(accdet-data-caps,ACCDET_AP_GPIO_EINT)){//TBD}accdet_for_plug_highlow();dump_register();pr_info(%s done!\n,__func__);}

相关新闻

终极免费文档转换神器:3分钟掌握FlashAI Convert Lite离线转换技巧

终极免费文档转换神器:3分钟掌握FlashAI Convert Lite离线转换技巧

终极免费文档转换神器:3分钟掌握FlashAI Convert Lite离线转换技巧 【免费下载链接】convert-lite flashai-convert-lite,离线免费文档转换工具,支持pdf to markdown,word to markdown,excel to markdown,ppt to markdown, html to markdown,…

2026/10/16 12:23:02 阅读更多 →
JVM基础1:内存区域、GC垃圾回收算法

JVM基础1:内存区域、GC垃圾回收算法

JVM 运行时五大内存分区分类、存储内容与对应异常内存分区两大分类标准(线程私有 / 线程共享)JVM 运行时数据区分为两类,核心区别:是否每个线程独立拥有内存、是否容易产生 OOM线程私有(单线程独占,线程销毁…

2026/10/16 12:54:06 阅读更多 →
BetterNCM安装器终极指南:3分钟精通网易云插件管理

BetterNCM安装器终极指南:3分钟精通网易云插件管理

BetterNCM安装器终极指南:3分钟精通网易云插件管理 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM安装器是一款专为网易云音乐用户设计的强大插件管理工具&#…

2026/10/16 13:01:14 阅读更多 →

最新新闻

Muse-Glimmer-30B-mxfp8 chat_template 详解:正确书写 System Prompt 与多轮图像对话的完整方法

Muse-Glimmer-30B-mxfp8 chat_template 详解:正确书写 System Prompt 与多轮图像对话的完整方法

【免费下载链接】Muse-Glimmer-30B-mxfp8 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Muse-Glimmer-30B-mxfp8 点击查看 免费下载 Muse-Glimmer-30B-mxfp8 是一个 300 亿参数的多模态视觉语言模型(image-text-to-text)&…

2026/10/17 15:02:41 阅读更多 →
实习面试题总结:从复盘到能力提升的完整指南

实习面试题总结:从复盘到能力提升的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 15:02:41 阅读更多 →
LeetCode接雨水全解法:从暴力到双指针与单调栈

LeetCode接雨水全解法:从暴力到双指针与单调栈

LeetCode 42题,接雨水。如果你刷过几轮算法题,几乎不可能没遇见过它。我自己的感受是,这道题在算法题单里的地位高得吓人,很多面经都把它挂在高频榜上。它不像动态规划有那么曲折的状态定义,也不像图论需要大量前置知识…

2026/10/17 15:02:41 阅读更多 →
OpenResearch:Claude Code、Codex、OpenCode、Cursor 安装配置与协同工作流

OpenResearch:Claude Code、Codex、OpenCode、Cursor 安装配置与协同工作流

1. 从 OpenResearch 这个标题说起:它到底想解决什么问题第一次看到 OpenResearch 这个词,我脑子里冒出来的不是某个具体产品,而是一类很典型的需求:把散落在不同 AI 编程工具里的能力、配置、会话和研究成果,收拢到一个…

2026/10/17 15:02:41 阅读更多 →
显存不足也能跑大模型:airllm分层加载推理实战与性能优化

显存不足也能跑大模型:airllm分层加载推理实战与性能优化

1. 当显存告急时,我们还能不能跑大模型 第一次看到 airllm 这个项目名的时候,我正被一张 8GB 显存的显卡折磨得够呛。手头有个 70B 级别的模型想本地跑起来做推理验证,结果加载权重这一步就直接爆显存,连模型的门都没进去。相信很…

2026/10/17 15:02:41 阅读更多 →
工业AI落地实战:视觉质检、预测维护与工艺优化全解析

工业AI落地实战:视觉质检、预测维护与工艺优化全解析

1. 项目概述:当AI不再是PPT里的概念,而是产线上的“新工人” “他山之石可攻玉”这句老话,放在今天的工厂里,突然有了特别实在的分量。我跟过不下二十家不同规模的制造企业做智能化升级咨询,从长三角的精密零部件厂&am…

2026/10/17 15:01:40 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →