This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
library:rk3568:lcddrv [2022/11/02 23:30] lhaosen [2.1 gpio-leds + spidev] |
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: |
- | * / | + | * spi: / |
- | * / | + | |
- | ==== - 内核配置 | + | ==== - 控制IO ==== |
+ | === - dts === | ||
+ | < | ||
+ | lcd_reset: | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | |||
+ | lcd_backlight: | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | |||
+ | lcd_data: data { | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | </ | ||
+ | 添加以上3个pin的gpio-leds节点,驱动成功后的访问入口为: | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | 可以用命令测试这几个pin的状态: | ||
+ | # backlight = 1 | ||
+ | echo 1 > / | ||
+ | # backlight = 0 | ||
+ | echo 1 > / | ||
+ | ==== - spidev配置 ==== | ||
+ | 修改DTS及添加驱动到内核 | ||
+ | |||
+ | === - 内核配置spidev | ||
Device Drivers ‐‐‐> | Device Drivers ‐‐‐> | ||
Line 55: | 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 { | + | < |
+ | &spi0 { | ||
status = " | status = " | ||
max-freq = < | max-freq = < | ||
- | | + | |
+ | pinctrl-1 = <& | ||
+ | spidev@0 { | ||
compatible = " | compatible = " | ||
- | reg = <0>; /* CS0 */ | + | reg = <0>; // CS0 |
spi-max-frequency = < | spi-max-frequency = < | ||
}; | }; | ||
- | | + | }; |
+ | </ | ||
+ | * pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0 | ||
+ | * 停用冲突的管脚: | ||
- | == disable uart8 == | ||
- | uart8于spi0管脚冲突,使uart8无效 | ||
- | &uart8 { | ||
- | status = " | ||
- | }; | ||
- | | ||
| | ||
==== - Demo script ==== | ==== - Demo script ==== | ||