Edit online

PBUS 配置

Read time: 2 minute(s)

内核配置

  1. 在内核配置界面,按如下选择:
    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";
    };