PBUS 配置
Read time: 3 minute(s)
内核配置
-
在 SDK 根目录下,执行下列命令,进入 kernel 的功能配置界面:
make kernel-menuconfig
或使用简写命令
make km
-
在内核配置界面,按如下选择:
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"; };