User Tools

Site Tools


library:rk3568:lcddrv

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
library:rk3568:lcddrv [2022/11/02 23:27]
lhaosen [2. Linux驱动设计]
library:rk3568:lcddrv [2022/11/02 23:55] (current)
lhaosen [2. Linux驱动设计(A)]
Line 42: Line 42:
 ^  6   | BL      | 171             | GPIO0_C3      |           | ^  6   | BL      | 171             | GPIO0_C3      |           |
  
-===== - Linux驱动设计 ===== +===== - Linux驱动设计(A) ===== 
-==== - gpio-leds + spidev ====+采用gpio-leds + spidev方式连接LCD模块,模块端口信号采用两种驱动: 
 +  * io:  /Reset,BL,CD信号,使用gpio-leds驱动 
 +  * spi: /CS,SCK,SDA使用spidev驱动
  
-对/Reset,Backlight,cd 使用gpio-leds驱动 +==== - 控制IO ==== 
-==== - 内核配置 ====+=== - dts === 
 +<code> 
 + lcd_reset: reset { 
 + label = "lcd:reset"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; 
 + }; 
 + 
 + lcd_backlight: backlight { 
 + label = "lcd:backlight"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; 
 + }; 
 + 
 + lcd_data: data { 
 + label = "lcd:data"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; 
 + }; 
 +</code> 
 +添加以上3个pin的gpio-leds节点,驱动成功后的访问入口为: 
 +  /sys/class/leds/lcd:reset 
 +  /sys/class/leds/lcd:backlight 
 +  /sys/class/leds/lcd:data 
 +   
 +可以用命令测试这几个pin的状态: 
 +  # backlight = 1 
 +  echo 1 > /sys/class/leds/lcd:backlight 
 +  # backlight = 0 
 +  echo 1 > /sys/class/leds/lcd:backlight 
 +==== - spidev配置 ==== 
 +修改DTS及添加驱动到内核 
 + 
 +=== - 内核配置spidev ===
  
   Device Drivers ‐‐‐>    Device Drivers ‐‐‐> 
Line 53: Line 91:
        [*] User mode SPI device driver support        [*] User mode SPI device driver support
  
-==== - dts配置 ====+=== - dts配置 ===
  
-=== - rk3568-firefly-mplayer.dtsi ===+  * rk3568-firefly-mplayer.dtsi
  
-== 使能spi0 == +添加节点spi0  
-  &spi0 {+<code> 
 +&spi0 {
     status = "okay";     status = "okay";
     max-freq = <50000000>;     max-freq = <50000000>;
-    spidev0@0 {+    pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins>; 
 +    pinctrl-1 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins_hs>;  
 +    spidev@0 {
         compatible = "rockchip,spidev";         compatible = "rockchip,spidev";
-        reg = <0>; /* CS0 */+        reg = <0>; // CS0
         spi-max-frequency = <5000000>;         spi-max-frequency = <5000000>;
     };     };
-  };+}; 
 +</code> 
 +  * pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0 
 +  * 停用冲突的管脚: uart8,pwm7等
  
  
-== disable uart8 == 
-uart8于spi0管脚冲突,使uart8无效 
-  &uart8 { 
-    status = "disabled"; 
-  }; 
-   
      
 ==== - Demo script ==== ==== - Demo script ====
  
library/rk3568/lcddrv.1667402834.txt.gz · Last modified: 2022/11/02 23:27 by lhaosen