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:34]
lhaosen [2.2 dts配置]
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模块,模块端口信号采用两种驱动: 
-LCD模块端口分为两种驱动模式: +  * io:  /Reset,BL,CD信号使用gpio-leds驱动 
-  * IO:  /Reset,BL,CD信号pin使用gpio-leds驱动 +  * spi: /CS,SCK,SDA使用spidev驱动
-  * SPI: /CS,SCK,SDA使用spidev驱动+
  
-=== - spi配置 ===+==== - 控制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及添加驱动到内核 修改DTS及添加驱动到内核
-== - 内核配置spidev ==+ 
 +=== - 内核配置spidev ===
  
   Device Drivers ‐‐‐>    Device Drivers ‐‐‐> 
Line 59: Line 93:
 === - 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.1667403299.txt.gz · Last modified: 2022/11/02 23:34 by lhaosen