Touch panel DTS 分析(MSM8994平台,Atmel 芯片)

在MSM8994平台,Touch panel的DTS写节点/kernel/arch/arm/boot/dts/qcom/msm8994-mtp.dtsi文件里。详细代码例如以下:


&soc {
          i2c@f9924000 {
                                   atmel_mxt_ts@4a {
                                            compatible = "atmel,atmel_mxt_ts";
                                            reg = <0x4a>;
                                            interrupt-parent = <&msm_gpio>;
                                            interrupts = <61 0x2008>;
                                            avdd-supply  = <&pm8994_l22>;
                                            vdd_io-supply = <&pm8994_l14>;
                                            .........
                                            };
                                };

在DTS节点中。我们主要看一下avdd-supply and vdd_io-supply两个属性。这两个属性在C代码里的使用方式例如以下:

/kernel/drivers/input/touchscreen/atmel_mxt_ts.c
mxt_probe_regulators(struct mxt_data *data)
{
     ........
     data->reg_vdd_io = regulator_get(dev, "vdd_io");
     ........
     data->reg_avdd = regulator_get(dev, "avdd");
     ........
}

/kernel/drivers/regulator/core.c
struct regulator *regulator_get(struct device *dev, const char *id)
{
     return _regulator_get(dev, id, 0);
}

static struct regulator *_regulator_get(struct device *dev, const char *id, int exclusive)
{
     .......
     rdev = regulator_dev_lookup(dev, id, &ret);
     if(rdev)
          goto found;
     ......
}

static struct regulator_dev *regulator_dev_lookup(struct devic *dev, const char *supply, int *ret)
{
     struct regulator_dev *r;
     struct device_node *node;
     ........
     /* first do a dt based lookup */
     if (dev && dev->of_node) {
          node = of_get_regulator(dev, supply)
          if (node) {
                    list_for_each_entry(r, &regulator_list, list)
                         if ( r->dev.parent && node == r->dev.of_node)
                                  return r;
                         ........
                         }
         }
}

static struct device_node *of_get_regulator(struct device *dev, const char *supply)
{
        struct device_node *regnode = NULL;
         char prop_name[32];
         .......
         snprintf(prop_name, 32, "%s-supply", supply);
         regnode = of_parse_phandle(dev->of_node, prop_name, 0);
         ........
}

从上述代码大致上能够看到DTS里的vdd_io-supply and avdd-supply属性是怎样解析和使用的。

在mxt_probe()函数中将字符串“avdd”和“vdd_io”传给regulator_get()函数。一步步调用下来后,在of_get_regulator()函数中将字符串合并成DTS中符合要求的字符串属性。之后通过属性的值来找到对应的regulator_dev 结构体。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Touch panel DTS 分析(MSM8994平台,Atmel 芯片)的更多相关文章

  1. Sencha touch Panel之间的跳转(如不使用TabPanel或者Carousel控件而产生跳转的动画效果)

    常规的Sencha touch 应用都是"header content footer"结构,这样的结构无疑将使用TabPanel来实现,而且TabPanel肯定是card布局,这样 ...

  2. Atmel芯片使用

    ATMEL系列芯片 9X35 9G35可pin-to-pin替代9G10,具体需核对.此外即使pin-to-pin替代,外部应用也不一样. A5D2处理器,可支持linux/andriod. M7(M ...

  3. 哪些BI分析商业智能平台是最受欢迎的?

    近些年来,AI推动的云生态系统已非常成熟.智能.增强的预测和决策工具处于这样一个阶段:准备好部署到企业中从董事会到车间的各个地方.挑战在于确保贵企业已准备好使用它们.因此,下面介绍了眼下最出色.最受欢 ...

  4. 分析USB平台设备模型框架(1)

    start_kernel rest_init(); kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); do_basic_setup ...

  5. 开源实时日志分析ELK平台部署

    参考帖子: (1)自动化测试Web服务器性能autobench+httperf

  6. regulator_get 调用过程【转】

    本文转载自:http://blog.csdn.net/u012719256/article/details/52083961 Touch panel DTS 分析(MSM8994平台,Atmel 芯片 ...

  7. 基于GPL329xx linux平台电容屏gsl1680的驱动调试分析

    因客户有用到了gsl1680 7寸电容屏,所以拿了一块过来,便在329xx的平台上面开始调试了. 大概浏览了一下所提供的资料,只有介绍模组的资料跟一份中文版的datasheet,datasheet只是 ...

  8. 基因组表达分析:如何选择RNA-seq vs. 芯片

    基因组表达分析:如何选择RNA-seq vs. 芯片 发布日期:2017-03-29 10:00 DNA 芯片(上图左侧)由附着在表面的核酸探针组成.首先,从样品中提取 RNA 并转化为互补 DNA( ...

  9. 爱特梅尔ATMEL全系列芯片解密单片机破解

    爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...

随机推荐

  1. 转载:使用bat命令来快速安装和卸载Service服务

    一般我们在编写完Service服务程序后,都是通过cmd命令提示窗口来安装或卸载服务,但频繁的在cmd窗口中去“拼”文件的路径着实让人“不能忍”.所以,我们需要一钟“更快捷”的方式来进行安装或者卸载操 ...

  2. Android图表和图形创建库:EazeGraph

    EazeGraph是一个 Android 库用于创建漂亮和花哨的图表.它具有易于使用和高度可定制的特点.当前支持四种不同的图表如下: Chart types Bar Chart Stacked Bar ...

  3. Spark源代码阅读笔记之DiskStore

    Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持 ...

  4. 中国象棋V2:Java源代码、毕业设计等所有文档,已经全部提交到CSDN-Code平台

    下载地址:https://code.csdn.net/FansUnion/chinesechess-v2 主要内容:Java源代码.毕业设计.API文档.声音图片等资源.Demo截图等一切的一切. 2 ...

  5. System.nanoTime()和System.currentTimeMillis()性能问题

    ​ 之前给模块做性能优化的时候,需要将性能调到毫秒级,使用了System.nanoTime()和System.currentTimeMillis()对代码分片计时分析耗时操作,后发现在串行情况下性能达 ...

  6. WPF 使用鼠标拖动一个控件的实现[2018.7.15]

    原文:WPF 使用鼠标拖动一个控件的实现[2018.7.15] Q:已经把一个Shape和一个TextBlock组合起来放到了一个Grid中,现在想要实现用鼠标拖动这个Grid到任意位置的功能,如何做 ...

  7. JEECG 什么是商业版本的功能最近添加的好友?

    JEECG 商业版本号近期新增什么功能啦? 2014-12-18 JEECG JEECG jeecg添加新的功能啦! !. 1.流程设计器 2.集成工作流引擎activit,智能化封装,在线配置表单, ...

  8. VC和matlab混合开发遇到的问题及其解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 1. error C2011: '_INTERFACE_INFO' : 'struct' type redefinit ...

  9. Azure Messaging-ServiceBus Messaging

    Azure Messaging-ServiceBus Messaging 上篇博文中我们介绍了Azure Messaging的重复消息机制.At most once 和At least once. A ...

  10. Vue.JS学习基础

      = 导航   顶部 vue.js介绍 vue.js实例 模板语法 计算属性 样式绑定 条件渲染 列表渲染 事件处理器 表单控件绑定 组件   顶部 vue.js介绍 vue.js实例 模板语法 计 ...