11--------------------------------------------------------------
2- pinctrl子系统总结
2+ A. pinctrl子系统总结
33--------------------------------------------------------------
44软件框架:
551. pinctrl-core
@@ -327,21 +327,30 @@ pinctrl_select_state(pinctrl, turnon_tes)。
327327
328328
329329
330+
331+
330332------------------
331333案例2 -- 一个背光灯device需要使用pwm的输出pin:
332334------------------
333- device tree:
334- 背光系统中要用到gpd2_4这个pin的TOUT_0功能和gpd4_3这个pin的输出功能并输出1,需要在backlight这个node中做以下描述,这两个pin只有一个状态(pwm-on),同样,这个名字也是可以随便起的。bl_pwm_ctrl和bl_pwm_en_ctrl分别是对这两个pin的描述。
335+ /////////////////////////
336+ //device tree:
337+ /////////////////////////
338+ 背光系统中要用到
339+ gpd2_4 这个pin的TOUT_0功能 和
340+ gpd4_3 这个pin的输出功能, 并输出1.
341+
342+ 需要在backlight这个node中做以下描述:
343+ 这两个pin只有一个状态(pwm-on),同样,这个名字也是可以随便起的;
344+ bl_pwm_ctrl 和 bl_pwm_en_ctrl 分别是对这两个pin的描述;
335345
336346backlight {
337347 ...
338348 ...
339- pinctrl-names = "pwm-on";
340- pinctrl-0 = <&bl_pwm_ctrl @bl_pwm_en_ctrl>;
349+ pinctrl-names = "pwm-on"; //state
350+ pinctrl-0 = <&bl_pwm_ctrl @bl_pwm_en_ctrl>; //它里面就必须要有function和gruop了
341351};
342352
343353/* 这个和上面一样,就不多说了 */
344-
345354&bl_pwm_ctrl_pinctrl{ //#define bl_pwm_ctrl_pinctrl pinctrl_2
346355bl_pwm_ctrl: bl_pwm_ctrl {
347356samsung,pins = bl_pwm_ctrl_pin; //#define bl_pwm_ctrl_pin "gpd2-4"
@@ -351,8 +360,7 @@ backlight {
351360};
352361};
353362
354- 这个描述比上面多了个pin-val,因为这个引脚不仅要配置成输出功能,还要输出1,所以pin-val = 1。
355-
363+ 下面这个描述,比上面的多了个pin-val,因为这个引脚不但要配置成输出功能,还要输出1,所以pin-val = 1。
356364&bl_pwm_en_ctrl_pinctrl{
357365bl_pwm_en_ctrl: bl_pwm_en_ctrl {
358366samsung,pins = bl_pwm_en_ctrl_pin; //#define bl_pwm_en_ctrl_pin "gpd4-3"
@@ -363,15 +371,19 @@ backlight {
363371};
364372};
365373
366- driver的操作:
367-
368- 在backlight的driver的probe中:
374+ /////////////////////////
375+ //driver的操作:
376+ /////////////////////////
377+ 在backlight的driver的probe中: 仅需3行,
369378
370379struct pinctrl * p = devm_pinctrl_get(&pdev->dev);
371380struct pinctrl_state * default_state = pinctrl_lookup_state(p, "pwm-on");
372381pinctrl_select_state(p, default_state);
373382
374- 执行完以上操作,可以发现gpd2_4引脚被配置成了TOUT_0功能,gpd4_3引脚被配置成为了输出功能,并且输出1(高电平)。
375- 以上就是pinctrl子系统的应用实例。如果有解释不太正确的地方请指教。
383+ 执行完以上操作,可以发现
384+ gpd2_4引脚被配置成了TOUT_0功能,
385+ gpd4_3引脚被配置成为了输出功能,并且输出1(高电平)。
386+
387+
376388
377- ---------------------
389+ 以上就是pinctrl子系统的应用实例
0 commit comments