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 08:40]
lhaosen [2.2 dts配置]
library:rk3568:lcddrv [2022/11/02 23:55] (current)
lhaosen [2. Linux驱动设计(A)]
Line 34: Line 34:
 ==== - 控制接口 ==== ==== - 控制接口 ====
  
-^  No  ^ 信号      ^ pin@Core-3568J  ^ pin@rk3568    GPIO      | +^  No  ^ 信号     ^ pin@Core-3568J  ^ pin@rk3568    GPIO      ^ 
-^  1   /RESET  | 169             | GPIO0_A6      |           | +^  1   /RESET  | 169             | GPIO0_A6      |           | 
-^  2   /CS     | 185             | SPI0_CS0_M0   | GPIO0_C6 +^  2   /CS     | 185             | SPI0_CS0_M0   | GPIO0_C6 
-^  3   SCK     | 175             | SPI0_CLK_M0   | GPIO0_B5 +^  3   SCK     | 175             | SPI0_CLK_M0   | GPIO0_B5 
-^  4   SDA     | 159             | SPI0_MOSI_M0  | GPIO0_B6 +^  4   SDA     | 159             | SPI0_MOSI_M0  | GPIO0_B6 
-^  5   CD      | 173             | GPIO0_C1      |           | +^  5   CD      | 173             | GPIO0_C1      |           | 
-^  6   BL      | 171             | GPIO0_C3      |           |+^  6   BL      | 171             | GPIO0_C3      |           |
  
-===== - Linux驱动设计 =====+===== - Linux驱动设计(A) ===== 
 +采用gpio-leds + spidev方式连接LCD模块,模块端口信号采用两种驱动: 
 +  * io:  /Reset,BL,CD信号,使用gpio-leds驱动 
 +  * spi: /CS,SCK,SDA使用spidev驱动
  
-==== - 内核配置 ====+==== - 控制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 51: 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.1667349634.txt.gz · Last modified: 2022/11/02 08:40 by lhaosen