PBUS 配置
5 Dec 2024
Read time: 2 minute(s)
内核配置
在 Luban 根目录下执行 make kernel-menuconfig,进入 kernel 的功能配置,按如下选择:
Linux
Device Drivers
Misc devices
[*] PBUS driver for ArtInChip SoC
DTS 参数配置
- PBus 自定义参数 PBus 驱动支持从 DTS 中配置的参数定义,基本和 Spec 中 CFG 寄存器的字段分布保持一致。如下表:
寄存器 参数名称 取值范围 功能说明 CFG0 outenable-pol-highactive [0, 1] 外设输出使能的极性,是否高电平有效 wrenable-pol-highactive [0, 1] 读写指示信号的极性,是否高电平有效 addrvalid-pol-highactive [0, 1] 地址有效信号的极性,是否高电平有效 cs-pol-highactive [0, 1] 外设片选信号的极性,是否高电平有效 busclk-pol-riseedge [0, 1] 地址/数据是否在总线时钟信号上升沿跳变 busclk-outenable [0, 1] 总线时钟输出的使能 busclk-div [0, 3] 总线时钟分频,0 - 未定义,
1 - HCLK/2, 2 - HCLK/4, 3 - HCLK/8
CFG1 wrdata-holdtime [0, 15] 写数据输出的保持时间 wrdata-delaytime [0, 15] 写数据输出的延迟时间 addr-holdtime [0, 15] 地址输出的保持时间 addr-delaytime [0, 15] 地址输出的延迟时间 cs-holdtime [0, 15] 外设片选信号的有效保持时间 cs-delaytime [0, 15] 外设片选信号的有效最小间隔 CFG2 outenable-holdtime [0, 15] 外设输出使能的保持时间 outenable-delaytime [0, 15] 外设输出使能的延迟时间 wrrd-holdtime [0, 15] 读写控制信号的保持时间 wrrd-delaytime [0, 15] 读写控制信号的延迟时间 addrvalid-holdtime [0, 15] 地址有效信号的保持时间 addrvalid-delaytime [0, 15] 地址有效信号的延迟时间 注:-
表中为了更加简洁,参数名称都省略了前缀“aic,”
-
前面 6 个参数,取值范围是 [0, 1],在 DTS 中是 boolean 类型,其他参数都是正整数类型
-
“保持时间”和“延迟时间” 的单位,都是 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"; };