PBUS 配置
内核配置
-
在内核配置界面,按如下选择:
Linux Device Drivers Misc devices [*] PBUS driver for ArtInChip SoC
DTS 参数配置
- PBUS 自定义参数
PBUS 驱动支持从 DTS 中配置的参数定义,基本和 Spec 中 CFG 寄存器的字段分布保持一致。如下表所示:
表 1. PBUS 自定义参数 寄存器
参数名称
类型
取值范围
功能说明
CFG0
outenable-pol-highactive
Boolean
[0, 1]
外设输出使能的极性,是否高电平有效
wrenable-pol-highactive
Boolean
[0, 1]
读写指示信号的极性,是否高电平有效
addrvalid-pol-highactive
Boolean
[0, 1]
地址有效信号的极性,是否高电平有效
cs-pol-highactive
Boolean
[0, 1]
外设片选信号的极性,是否高电平有效
busclk-pol-riseedge
Boolean
[0, 1]
地址/数据是否在总线时钟信号上升沿跳变
busclk-outenable
Boolean
[0, 1]
总线时钟输出的使能
busclk-div
Integer
[0, 3]
总线时钟分频- 0 - 未定义
- 1 - HCLK/2
- 2 - HCLK/4
- 3 - HCLK/8
CFG1
wrdata-holdtime
Integer
[0, 15]
写数据输出的保持时间 单位:PBUS clk 的周期值
wrdata-delaytime
Integer
[0, 15]
写数据输出的延迟时间 单位:PBUS clk 的周期值
addr-holdtime
Integer
[0, 15]
地址输出的保持时间 单位:PBUS clk 的周期值
addr-delaytime
Integer
[0, 15]
地址输出的延迟时间 单位:PBUS clk 的周期值
cs-holdtime
Integer
[0, 15]
外设片选信号的有效保持时间 单位:PBUS clk 的周期值
cs-delaytime
Integer
[0, 15]
外设片选信号的有效最小间隔
CFG2
outenable-holdtime
Integer
[0, 15]
外设输出使能的保持时间 单位:PBUS clk 的周期值
outenable-delaytime
Integer
[0, 15]
外设输出使能的延迟时间 单位:PBUS clk 的周期值
wrrd-holdtime
Integer
[0, 15]
读写控制信号的保持时间 单位:PBUS clk 的周期值
wrrd-delaytime
Integer
[0, 15]
读写控制信号的延迟时间 单位:PBUS clk 的周期值
addrvalid-holdtime
Integer
[0, 15]
地址有效信号的保持时间 单位:PBUS clk 的周期值
addrvalid-delaytime
Integer
[0, 15]
地址有效信号的延迟时间 单位:PBUS clk 的周期值
- D211 配置common/d211.dtsi 中的参数配置:
pbus: pbus@107F0000 { compatible = "artinchip,aic-pbus-v1.0"; reg = <0x0 0x107F0000 0x0 0x1000>; clocks = <&cmu CLK_PBUS>; resets = <&rst RESET_PBUS>; };
- Board 配置
xxx/board.dts 中的参数配置:
&pbus { aic,busclk-div = <2>; aic,busclk-outenable; aic,busclk-pol-riseedge; aic,cs-pol-highactive; aic,addrvalid-pol-highactive; aic,wrenable-pol-highactive; aic,outenable-pol-highactive; aic,wrdata-holdtime = <1>; aic,wrdata-delaytime = <2>; aic,addr-holdtime = <3>; aic,addr-delaytime = <4>; aic,cs-holdtime = <5>; aic,cs-delaytime = <6>; aic,outenable-holdtime = <7>; aic,outenable-delaytime = <8>; aic,wrrd-holdtime = <9>; aic,wrrd-delaytime = <10>; aic,addrvalid-holdtime = <11>; aic,addrvalid-delaytime = <12>; status = "okay"; };