高通android驱动和设备树-wifi驱动粗略记录

2023-12-06 17:44

本文主要是介绍高通android驱动和设备树-wifi驱动粗略记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、高通设备树

对驱动之类的略有了解,今天看wifi功耗问题的时候想看一下设备树的定义,一开始怎么也没找到设备树是哪个,后来经询问,得知在vendor目录下

vendor/qcom/proprietary/devicetree

这个是高通通用的设备树定义和驱动放置的位置

很想知道它是怎么被linux kernel一起编译的,最后发现其实就是个软连接

在kernel/msm-5.4/arch/arm64/boot/dts

lrwxrwxrwx 1 root root 52 10月 30 18:01 ./vendor -> ../../../../../../vendor/qcom/proprietary/devicetree

二、wifi- CNSS休眠唤醒日志:

这个是CNSS开机,到休眠,到唤醒的日志

https://download.csdn.net/download/yudelian/88602574

 如上面日志

01-01 08:04:05.915     0     0 D cnss    : De-assert WLAN_EN GPIO successfully

01-01 08:04:05.915     0     0 D cnss    : Regulator vdd-wlan-vh is being disabled
01-01 08:04:05.916     0     0 D cnss    : Regulator vdd-wlan-s5c is being disabled
01-01 08:04:05.916     0     0 D cnss    : Regulator vdd-wlan-vm is being disabled
01-01 08:04:05.916     0     0 D cnss    : Regulator vdd-wlan-vl is being disabled
01-01 08:04:05.916     0     0 D cnss    : Regulator vdd-wlan-ctrl2 is being disabled
01-01 08:04:05.916     0     0 D cnss    : Regulator vdd-wlan-ctrl1 is being disabled

休眠的时候 WLAN_EN,这个是一个引脚,会下电的,这样可以降低功耗

三、qcom wifi驱动源码文件地址:

vendor/qcom/opensource/wlan/qcacld-3.0/core/hdd/src/wlan_hdd_main.c

举功耗功能为例:

hdd_context_create       

        hdd_ctx->pm_notifier.notifier_call = hdd_pm_notify;

        register_pm_notifier(&hdd_ctx->pm_notifier);

上面在创建context的时候,在linux内核里注册一个pm事件回调hdd_pm_notify,

hdd_shutdown_wlan_in_suspend_prepare根据ucfg_pmo_get_suspend_mode配置看是否支持shutdown功能,一开始这儿不支持,当系统休眠的时候,就会走到驱动的suspend和resume函数,导致wifi模块无法下电,后来在这里不管配置,直接走下去了,最后调用到pld_idle_shutdown,我们的wifi硬件接口是pcie的,所以最后调用到了

cnss_idle_shutdown,这个是cnss的驱动接口。

static int hdd_pm_notify(struct notifier_block *b,unsigned long event, void *p){switch (event) {case PM_SUSPEND_PREPARE:case PM_HIBERNATION_PREPARE:if (0 != hdd_shutdown_wlan_in_suspend_prepare())return NOTIFY_STOP;break;case PM_POST_SUSPEND:case PM_POST_HIBERNATION:break;}return NOTIFY_DONE;
}static QDF_STATUS hdd_shutdown_wlan_in_suspend_prepare(void)
{
#define SHUTDOWN_IN_SUSPEND_RETRY 10int count = 0;struct hdd_context *hdd_ctx;hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);if (wlan_hdd_validate_context(hdd_ctx) != 0)return -EINVAL;//if (ucfg_pmo_get_suspend_mode(hdd_ctx->psoc) != PMO_SUSPEND_SHUTDOWN) {//    hdd_info("shutdown in suspend not supported");//    return 0;//}hdd_debug("call pld idle shutdown directly");return pld_idle_shutdown(hdd_ctx->parent_dev, hdd_psoc_idle_shutdown);
}

四、wifi CNSS驱动

kernel/msm-5.4/drivers/net/wireless/cnss2

驱动在linux内核里,应该是通用的

这里面有MHI的使用,

MHI (Modem Host Interface) — The Linux Kernel documentation

https://download.csdn.net/download/yudelian/88602688

MHI (Modem Host Interface),就是一个Modem主机接口协议,用于主控制器和modem设备进行高速通信,主要应用于PCIE总线设备上,提供逻辑信道。

MHI (Modem Host Interface)
This document provides information about the MHI protocol.

Overview
MHI is a protocol developed by Qualcomm Innovation Center, Inc. It is used by the host processors to control and communicate with modem devices over high speed peripheral buses or shared memory. Even though MHI can be easily adapted to any peripheral buses, it is primarily used with PCIe based devices. MHI provides logical channels over the physical buses and allows transporting the modem protocols, such as IP data packets, modem control messages, and diagnostics over at least one of those logical channels. Also, the MHI protocol provides data acknowledgment feature and manages the power state of the modems via one or more logical channels.
 

这篇关于高通android驱动和设备树-wifi驱动粗略记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/462720

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回