#include #include #include #include #include #include #include //type 0 indicates MHU2, /* Configuration for Chip 0 */ struct remote_instance remote_instances0[] = { [0] = { .process = { .remote_instance_id = 1, .read_address = 0xA4001000 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .type = 0, }, }, [1] = { .process = { .remote_instance_id = 2, .read_address = 0xA4001000 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .type = 0, }, }, [2] = { .process = { .remote_instance_id = 3, .read_address = 0xA4001000 + 0x400 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .type = 0, }, } }; /* Configuration for Chip 1 */ struct remote_instance remote_instances1[] = { [0] = { .process = { .remote_instance_id = 0, .read_address = 0xA4001000, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .type = 0, }, }, [1] = { .process = { .remote_instance_id = 2, .read_address = 0xA4001000 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .type = 0, }, }, [2] = { .process = { .remote_instance_id = 3, .read_address = 0xA4001000 + 0x400 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .type = 0, }, } }; /* Configuration for Chip 2 */ struct remote_instance remote_instances2[] = { [0] = { .process = { .remote_instance_id = 0, .read_address = 0xA4001000, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .type = 0, }, }, [1] = { .process = { .remote_instance_id = 1, .read_address = 0xA4001000 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .type = 0, }, }, [2] = { .process = { .remote_instance_id = 3, .read_address = 0xA4001000 + 0x400 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .type = 0, }, } }; /* Configuration for Chip 3 */ struct remote_instance remote_instances3[] = { [0] = { .process = { .remote_instance_id = 0, .read_address = 0xA4001000, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 2, 0), .type = 0, }, }, [1] = { .process = { .remote_instance_id = 1, .read_address = 0xA4001000 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 3, 0), .type = 0, }, }, [2] = { .process = { .remote_instance_id = 2, .read_address = 0xA4001000 + 0x400 + 0x400, }, .transport = { .driver_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .driver_api_id = FWK_ID_API_INIT(FWK_MODULE_IDX_MHU2, 0), .element_id = FWK_ID_SUB_ELEMENT_INIT(FWK_MODULE_IDX_MHU2, 4, 0), .type = 0, }, } }; static const struct fwk_element instance_table0[] = { [0] = { .name = "INSTANCE0", .data = &((struct instance_ctx) { .write_base_address = 0xA4001000, .write_max_size = 0x400, .instance_id = 0, .remote_instances = remote_instances0, .no_of_instances = 3, }) }, [1] = {0}, }; static const struct fwk_element instance_table1[] = { [0] = { .name = "INSTANCE1", .data = &((struct instance_ctx) { .write_base_address = 0xA4001000 + 0x400, .write_max_size = 0x400, .instance_id = 1, .remote_instances = remote_instances1, .no_of_instances = 3, }) }, [1] = {0}, }; static const struct fwk_element instance_table2[] = { [0] = { .name = "INSTANCE2", .data = &((struct instance_ctx) { .write_base_address = 0xA4001000 + 0x400 + 0x400, .write_max_size = 0x400, .instance_id = 2, .remote_instances = remote_instances2, .no_of_instances = 3, }) }, [1] = {0}, }; static const struct fwk_element instance_table3[] = { [0] = { .name = "INSTANCE3", .data = &((struct instance_ctx) { .write_base_address = 0xA4001000 + 0x400 + 0x400 + 0x400, .write_max_size = 0x400, .instance_id = 3, .remote_instances = remote_instances3, .no_of_instances = 3, }) }, [1] = {0}, }; static const struct fwk_element *sideband_get_element_table(fwk_id_t module_id) { const struct mod_sid_info *sid_info; int status; status = mod_sid_get_system_info(&sid_info); if (status != FWK_SUCCESS) assert(false); if (sid_info->node_number == 0) return instance_table0; else if (sid_info->node_number == 1) return instance_table1; else if (sid_info->node_number == 2) return instance_table2; else return instance_table3; } const struct fwk_module_config config_sideband = { .get_element_table = sideband_get_element_table, };