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. [Recompose] Add Local State to a Functional Stateless Component using Recompose

    Learn how to use the 'withState' and 'withHandlers' higher order components to easily add local stat ...

  2. [Java][Spring]Spring事务不起作用 问题汇总

    [Java][Spring]Spring事务不起作用 问题汇总 http://blog.csdn.net/szwangdf/article/details/41516239

  3. php中foreach源码分析(编译原理)

    php中foreach源码分析(编译原理) 一.总结 编译原理(lex and yacc)的知识 二.php中foreach源码分析 foreach是PHP中很常用的一个用作数组循环的控制语句.因为它 ...

  4. Xcode经常使用插件使用及自己主动生成帮助文档

    *一.Xcode 插件下载:* VVDocumenter下载:https://github.com/onevcat/VVDocumenter-Xcode Xcode经常使用插件下载:http://pa ...

  5. 百度echart--Uncaught Error: Component series.wordCloud not exists. Load it first.

    百度echart--Uncaught Error: Component series.wordCloud not exists. Load it first. 一.总结 一句话总结:关注报的错.可以通 ...

  6. js如何实现动态点击改变单元格颜色?

    js如何实现动态点击改变单元格颜色? 一.总结 1.通过table的rows属性,遍历表格所有行,然后通过cells属性,遍历每一行中的单元格. 2.遍历的过程中,动态的为每一个单元格定义单击事件,改 ...

  7. Chrome谷歌浏览器web前端开发好用插件(自己用)备忘

    Chrome谷歌浏览器web前端开发好用插件(自己用)备忘 一.总结 英语好一点的话要什么工具就直接去Chrome插件里面找非常方便. 二.测试题-简答题 1.Chrome修改页面字符集是什么? 解答 ...

  8. 数组filter方法对数组元素进行过滤

    Array.prototype.filter对数组中元素进行过滤 /** * @method reduce * @param {number} item 当前迭代的数组元素 * @param {num ...

  9. poj1007——DNA Sorting

    Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are ...

  10. [javase学习笔记]-6.5 类类型參数与匿名对象

    这一节我们来说说类类型參数和匿名对象. 我们继续用之前的小汽车类吧 class Car { int num;//这是轮胎数属性 String color;//这是颜色属性 String brand;/ ...