说明

如果驱动中使用了gpio,通过echo方式拉高gpio是不行的,只能写寄存器的方式拉高电平

操作步骤

在fm驱动中写寄存器的方式修改gpio电平

From f36cb20e53ab9aa48d4b8d34888cc698183c6e27 Mon Sep 17 00:00:00 2001
From: zhoujinyan <zhoujy@ibumobile.com>
Date: Fri, 15 May 2020 22:26:55 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3FM=E8=AE=BE=E5=A4=87=E8=8A=82?=
 =?UTF-8?q?=E7=82=B9=E6=B2=A1=E6=9C=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 kernel/msm-3.18/sound/i2c/rdafm_drv.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/kernel/msm-3.18/sound/i2c/rdafm_drv.c b/kernel/msm-3.18/sound/i2c/rdafm_drv.c
index c1e4171..9cd2a0f 100644
--- a/kernel/msm-3.18/sound/i2c/rdafm_drv.c
+++ b/kernel/msm-3.18/sound/i2c/rdafm_drv.c
@@ -15,6 +15,8 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 
+#include "../../drivers/pinctrl/qcom/pinctrl-msm.h"
+
 //#include <linux/fm.h>
 #define FM_RX_BAND            1
 //flag
@@ -1223,11 +1225,21 @@ static int fm_ops_release(struct inode *inode, struct file *filp)
     return err;
 }
 
+extern void __iomem *base_iomem(void);
 static int fm_init(struct i2c_client *client)
 {
     int err;
     struct fm *fm = NULL;
     int ret = -1;
+    
+    void __iomem *regs;
+    regs = base_iomem();
+    writel(0x201, regs + 0x8a000);//gpio138--->0x8a
+    writel(0x03, regs + 0x8a004);//gpio138--->0x8a
+    writel(0x201, regs + 0x00000);//gpio0--->0x8a
+    writel(0x03, regs + 0x00004);//gpio0--->0x8a
+    FM_ALERT("fm_init,powerup......\n");
+    msleep(50);
 
     FM_DEBUG("%s\n", __func__);
     if (!(fm = kzalloc(sizeof(struct fm), GFP_KERNEL)))
@@ -1348,7 +1360,16 @@ static int fm_powerup(struct fm *fm, struct fm_tune_parm *parm)
     int ret = -1;
 
     struct i2c_client *client = fm->i2c_client;
-
+    
+    void __iomem *regs;
+    regs = base_iomem();
+    writel(0x201, regs + 0x8a000);//gpio138--->0x8a
+    writel(0x03, regs + 0x8a004);//gpio138--->0x8a
+    writel(0x201, regs + 0x00000);//gpio0--->0x8a
+    writel(0x03, regs + 0x00004);//gpio0--->0x8a
+    FM_ALERT("fm_powerup......\n");
+    msleep(100);
+    
     if (fm->powerup)
     {
         parm->err = FM_BADSTATUS;
--
2.7.4

FM收音机驱动源码

注:如果是读gpio138的值是如下方法:

int value = readl(regs + 0x8a004);//gpio138

android7.1 msm8953通过寄存器拉高gpio电平相关推荐

  1. 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...

  2. STM32 SPI NSS 引脚为不能拉高问题

    使用过 STM32 的SPI 的朋友可能都会发现一个问题,那就是其NSS引脚 在硬件模式下无法自动拉高,可能也因为这个原因致使  .大部分朋友在使用SPI时候都是优先选用软件 控制NSS引脚的工作模式 ...

  3. rk3288w android9.0 uboot上拉双gpio写法

    以pmu act8846的引脚为例,它需要用到pmic_vsel.pwr_hold两个脚,需要在pinctrl里配置保证它能作为gpio来使用,pmic_vsel硬件上默认为低电平状态,所以pinct ...

  4. 单片机C语言拉高1位,第二讲 单片机C语言之12864液晶显示

    前面一讲我们焊接了C51的最小系统.这讲里我们将继续焊接上液晶显示相关电路,并分别实现用12864显示一个汉字,字符串,数字,浮点数以及可调节的电子时钟. 概念 点阵式液晶显示模块(LCD)广泛应用于 ...

  5. 员工30年换150万补偿款!佳能珠海关厂 因给太多遭痛骂:恶意拉高赔偿标准

    手机真的取代了数码相机?由于受到全球疫情影响,上游芯片供应限制,以及智能手机的冲击.佳能珠海因经营面临困难,决定终止小型数码相机(又称卡片机)的生产.其实由于近一两年疫情的影响,很多大大小小的企业都没 ...

  6. vivo X系列为什么能不断拉高手机上限?

    出品 | 何玺 排版 | 叶媛 X90系列再一次拉高了旗舰手机的上限.或者说,vivo的高端之路,又进了一步! 为什么这样说?因为X90系列真的很强.自研芯片V2.蔡司一英寸T*主摄.自研VCS仿生光 ...

  7. 分时线的9代表什么_股票早上快速拉高然后慢慢下跌,意味着什么?看完才知道套路...

    既然人性是与生俱来的,那么站在这个角度上来看,投机交易盈利的逻辑,一定是假设绝大多数的交易者一定会犯跟以前一样的错误, 这样自己才有可能赚取这大部分交易者的钱,才有可能获得几倍于本金的投资收益,这里需 ...

  8. EXCEL中,不能调整行高。当把行高拉到409的时候就不能再拉高了,是什么原因?

    问题: EXCEL中,不能调整行高.当把行高拉到409的时候就不能再拉高了,是什么原因? 亲测解决方案: EXCEL中,不能调整行高.当把行高拉到409的时候就不能再拉高了,是因为当个单元格行高是有限 ...

  9. 【杂乱的生活】如果IT界拉高了房价 该怨谁?

    上周日(3月25日)2012中国IT领袖峰会,本是IT界的大会,但因为 房地产大佬任志强的一番"IT界挣钱太容易,把中国平均购房年龄降低到20多岁"的相关言论引起了广泛的争议,甚至 ...

最新文章

  1. spring 学习—spring 的ioc底层原理(03)
  2. 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
  3. MCtalk教育快报 | 0816
  4. gc()两分钟了解JDK8默认垃圾收集器(附英文)
  5. JavaScript数据结构与算法——队列详解(上)
  6. 币安Binance.client can‘t find the module client 解决办法
  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...
  8. EM算法极其推广---EM算法的收敛性
  9. session失效_Session的销毁方式到底有哪些?
  10. OpenCV---ROI(region of interest)和泛洪填充
  11. 前端开发-跨浏览器测试工具
  12. java 136年以后的时间_136年清明查询 - 136年清明是几号 - 136年清明具体时间
  13. Windows 10 : 使用BCDboot恢复双系统启动
  14. 唯美毕业论文答辩PPT模板
  15. Android怎么导入夜神模拟器,电脑文件怎么传到夜神android模拟器 文件上传夜神模拟器...
  16. python设置颜色_使用python改变颜色的色调
  17. 保险丝的常用规格型号及主要参数说明
  18. 快手信息流广告如何投放才能达到好的效果?
  19. 数据分析---arXiv论文数据统计
  20. 【原创】年轻人接受指点,但不接受指指点点

热门文章

  1. vue移动端vant的layout布局van-row,van-col实现带背景色table表格
  2. 数据结构(一)线性存储结构
  3. iPhone安装企业包出现“无法验证证书”问题解决
  4. Spring Aware
  5. 计算机组装关于显卡的试题,计算机组装硬件考试试题题库
  6. 135-146 李游前端精品课程笔记
  7. 【调剂】3.13计算机考研其余调剂信息
  8. H5测试点总结-UI测试、功能测试、兼容性测试、体验相关(弱网、资源、手机操作等)、安全性测试、性能测试...
  9. 垂直搜索引擎发展的几个方向
  10. 球半足球预测,经典对局分析欧国联:德国 vs 意大利 6月15日