[dts]DTS实例分析
2. 通常會碰到的實際問題
到此,問題出現了:
1. 當寫一個按鍵驅動,應該如何在*.dts或者*.dtsi中操作?
2. 當在串口driver中需要使用到某個pin腳作為普通輸出IO,該如何操作?
3. 當在串口driver中需要使用某個muxpin腳作為ADC或者其他服用功能該如何操作?
4. 當在串口driver中有可能想使能某個功能而不想寫定在driver代碼中,該如何操作?
5. 當想向driver中傳入一個常數如做delay延時操作等等,該如何操作?
?
解答:
1. 當寫一個按鍵驅動,應該如何在*.dts或者*.dtsi中操作?
1 gpio-keys { 2 compatible = "gpio-keys"; 3 pinctrl-names = "default"; 4 pinctrl-0 = <&pinctrl_gpio_keys>; 5 6 volume-up { 7 label = "Volume Up"; 8 gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; 9 linux,code = <KEY_VOLUMEUP>; 10 }; 11 12 volume-down { 13 label = "Volume Down"; 14 gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; 15 linux,code = <KEY_VOLUMEDOWN>; 16 }; 17 }; 1 pinctrl_gpio_keys: gpio_keysgrp { 2 fsl,pins = < 3 MX6SX_PAD_CSI_DATA04__GPIO1_IO_18 0x17059 4 MX6SX_PAD_CSI_DATA05__GPIO1_IO_19 0x17059 5 >; 6 };?
2. 當在串口driver中需要使用到某個pin腳作為普通輸出IO,該如何操作?
1 sii902x_reset: sii902x-reset { 2 compatible = "gpio-reset"; 3 reset-gpios = <&gpio3 27 1>; 4 reset-delay-us = <100000>; 5 #reset-cells = <0>; 6 status = "disabled"; 7 };?
最簡單的不需要pinctrl來進行pin腳的設置,為什么???
3. 當在串口driver中需要使用某個muxpin腳作為ADC或者其他服用功能該如何操作?
這個問題其實上面有提到,就像上述的多個pin-names和多個pinctrl在后面的pinctrl中配置這個復用的管腳即可。
4. 當在串口driver中有可能想使能某個功能而不想寫定在driver代碼中,該如何操作?
1 &uart5 { 2 pinctrl-names = "default"; 3 pinctrl-0 = <&pinctrl_uart5>; 4 fsl,uart-has-rtscts; 5 status = "okay"; 6 7 };?
只需要在driver中使用of函數讀取此屬性,如果有此字段,可以使能某些操作;如果沒有就失能某些操作。
5. 當想向driver中傳入一個常數如做delay延時操作等等,該如何操作?
1 &usdhc3 { 2 pinctrl-names = "default", "state_100mhz", "state_200mhz"; 3 pinctrl-0 = <&pinctrl_usdhc3>; 4 pinctrl-1 = <&pinctrl_usdhc3_100mhz>; 5 pinctrl-2 = <&pinctrl_usdhc3_200mhz>; 6 bus-width = <8>; 7 cd-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; 8 wp-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>; 9 keep-power-in-suspend; 10 enable-sdio-wakeup; 11 vmmc-supply = <&vcc_sd3>; 12 status = "okay"; 13 };?
只需要在driver中讀取bus-width字段的值,即可獲取到8這個常量,注意在devicetree中命名字段更多使用"-"而非下劃線"_".
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的[dts]DTS实例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python进阶小技巧
- 下一篇: WMS软件哪个好?排名怎样