ram rapidio_v4
API Reference Manual  /  4 Model-to-Model Interfaces  / 

rapidio_v3

Description
SIM_INTERFACE(rapidio_v3) {
    void (*memory_operation)(conf_object_t *obj, uint16 destination,
                             uint16 source, physical_address_t addr,
                             dbuffer_t *buf, rapidio_operation_t op);
    void (*doorbell)(conf_object_t *obj, uint16 destination,
                     uint16 source, uint16 data);
    void (*deliver_message)(conf_object_t *obj, uint16 destination,
                            uint16 source, uint16 mbox,
                            uint16 letter, dbuffer_t *data);
    uint32 (*read_register)(conf_object_t *obj, uint16 destination,
                            uint16 source, uint8 hopcount, int reg_no);
    void (*write_register)(conf_object_t *obj, uint16 destination,
                           uint16 source, uint8 hopcount,
                           int reg_no, uint32 value);
    void (*port_write)(conf_object_t *obj, uint16 target_id,
                       uint16 source_id, uint8 hopcount, dbuffer_t *msg);
};

#define RAPIDIO_V3_INTERFACE "rapidio_v3"

The interface is designed for peer-to-peer communication. Switches and devices will use the same interface.

The doorbell method corresponds to a DOORBELL/DONE packet pair, while deliver_message denotes a non-fragmented message. On the physical line this will be split into 256-byte MESSAGE packets acknowledged by a DONE packet.

read_register and write_register is the way to simulate MAINTENANCE operations.

I/O accesses are done using the memory_operation function, which will encode the operation in the op argument. The valid values are listed below.

typedef enum {
        RapidIO_Read,
        RapidIO_Write,
        RapidIO_Increment,
        RapidIO_Decrement,
        RapidIO_Test_and_Swap,
        RapidIO_Set,
        RapidIO_Clear,
        RapidIO_Compare_and_Swap,
        RapidIO_Swap
} rapidio_operation_t;

The size of the buf argument decides the transaction size and the addr argument dictates where the access is made. The dbuffer buf serves as both incoming data and a place where the receiver can store read data. The bytes of a increment or decrement operation is in big endian order in the dbuffer.

port_write corresponds to PORT_WRITE packet, with all arguments stored in big endian order in the dbuffer argument. Typically this is the four 32-bit words component_tag_csr, port_error_detect_csr, port_id and transport_layer_error_detect_csr.

This interface has been superseded by rapidio_v4. Cache control packets like IO_READ_HOME and FLUSH are not supported yet. Error reporting is not supported.

Execution Context
Cell Context for all methods.

ram rapidio_v4