全志科技
直播中

刘桂英

7年用户 1215经验值
私信 关注
[问答]

在dtbo中如何配置不同gpio的pin脚呢

  • 客户同一款产品,一供模拟功放和二供模拟功放使用不同的PIN脚来使能PA,客户想在dtbo中根据硬件版本类型配置不同的pin脚。但是在dtbo中根据dts的方法配置的时候会报syntax error。如当时按以下方法配置成PM8的情况,会提示syntax error
  • &codec_ex {
  •   gpio-spk = <&r_pio PM 8 1 1 1 1>;
  • };

  • 在dts中,如果要使用gpio.h中定义的pin脚,那么可以直接用#include 这句话把gpio.h头文件包含之后就可以使用里面定义的宏了。但dtbo的语法不支持这种include的方式,也不支持直接在dtbo中定义宏的方式,因此要配置PM8这个pin时,不能写PM这个符号,只能写PM实际定义的数字。所有pin定义的数字定义在lichee/linux-4.9/include/dt-bindings/gpio/gpio.h,如下所示:
  • /* sunxi gpio arg */
  • #define  PA  0
  • #define  PB  1
  • #define  PC  2
  • #define  PD  3
  • #define  PE  4
  • #define  PF  5
  • #define  PG  6
  • #define  PH  7
  • #define  PI  8
  • #define  PJ  9
  • #define  PK  10
  • #define  PL  11
  • #define  PM  12
  • #define  PN  13
  • #define  PO  14
  • #define  PP  15
  • #define  default 0xffffffff

回帖(1)

陈玉筠

2021-12-29 12:03:50
解决方法
在device/config/chips/r329/configs/xxx/dtbo/xxx.dts中根据实际要配置的pin脚加入以下代码,如配置使能脚为PM8,则根据lichee/linux-4.9/include/dt-bindings/gpio/gpio.h中的宏定义把PM改成12,改动如下:
&codec_ex {
  gpio-spk = <&r_pio 12 8 1 1 1 1>;
};
举报

更多回帖

发帖
×
20
完善资料,
赚取积分