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. 以Network Dataset(网络数据集)方式实现的最短路径分析

    转自原文 以Network Dataset(网络数据集)方式实现的最短路径分析 构建网络有两种方式,分别是网络数据集NetworkDataset和几何网络Geometric Network,这个网络结 ...

  2. Linux开发环境搭建与使用系列教程

    00.Linux开发环境搭建与使用1——Linux简史 01.Linux开发环境搭建与使用2——Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3——通过虚拟机安装系统(ub ...

  3. BZOJ 1699 [Usaco2007 Jan]Balanced Lineup排队 线段树

    题意:链接 方法:线段树 解析: 题意即题解. 多次询问区间最大值与最小值的差.显然直接上线段树或者rmq维护区间最值就可以. 代码: #include <cstdio> #include ...

  4. OOA/OOD/OOP 转载

    OOA/OOD/OOP OOA Object-Oriented Analysis:面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题.OOA与结构化分析有较 ...

  5. AJAX代码格式

    var request; //XMLHttpRequest的创建 function createRequest(url){ if(window.XMLHttpRequest){ request = n ...

  6. 使用RpcLite构建SOA/Web服务

    使用RpcLite构建SOA/Web服务 SOA框架系列 1. 使用RpcLite构建SOA/Web服务 提到Web服务最先想到的就是WebService此外常用的还有WCF.ServiceStack ...

  7. Fiddler快速入门(还有一个功能就是不经过网络,直接模拟一个响应返回给客户端)

    Fiddler是一个免费.强大.跨平台的HTTP抓包工具.Wireshark也是一个强大的抓包工具,不过Wireshark是一个通用的抓包工具,主要精力放在各种协议上了,针对HTTP的特定功能较少.所 ...

  8. XSS攻击之基础篇:HTML标签与字符串的渲染

    <body> XSS攻击之基础篇:HTML标签与字符串的渲染 测试 <div class="a1"> </div> <div class= ...

  9. 【16.67%】【codeforces 667C】Reberland Linguistics

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  10. 构建工具Gradle

    1.Summary   从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野.而随着热修复.插件化.编译时注解的流行, ...