• Inochi Amaoto's avatar
    dt-bindings: timer: Add Sophgo sg2042 CLINT timer · 4734449f
    Inochi Amaoto authored
    The clint of Sophgo's sg2042 is based off IP designed by T-HEAD, but
    Sophgo changes this IP layout to fit its cpu design and is incompatible
    with the standard sifive clint. The timer and ipi device are on the
    different address, and can not be handled by the sifive,clint dt-bindings.
    
    If we use the same compatible string for mswi and timer of the sg2042
    clint like sifive,clint, the DT may be like this:
    
    mswi: interrupt-controller@94000000 {
    	compatible = "sophgo,sg2042-clint", "thead,c900-clint";
    	interrupts-extended = <&cpu1intc 3>;
    	reg = <0x94000000 0x00010000>;
    };
    
    timer: timer@ac000000 {
    	compatible = "sophgo,sg2042-clint", "thead,c900-clint";
    	interrupts-extended = <&cpu1intc 7>;
    	reg = <0xac000000 0x00010000>;
    };
    
    Since the address of mswi and timer are different, it is hard to merge
    them directly. So we need two DT nodes to handle both devices.
    If we use this DT for SBI, it will parse the mswi device in the timer
    initialization as the compatible string is the same, so will mswi.
    As they are different devices, this incorrect initialization will cause
    the system unusable.
    
    There is a more robust ACLINT spec. can handle this situation, but
    the spec. seems to be abandoned and will not be frozen in the predictable
    future.
    
    So it is not the time to add ACLINT spec in the kernel bindings. Instead,
    using vendor bindings is more acceptable.
    
    Add new vendor specific compatible strings to identify timer of sg2042
    clint.
    Signed-off-by: default avatarInochi Amaoto <inochiama@outlook.com>
    Signed-off-by: default avatarChen Wang <unicorn_wang@outlook.com>
    Signed-off-by: default avatarConor Dooley <conor.dooley@microchip.com>
    4734449f
thead,c900-aclint-mtimer.yaml 920 Bytes