936 } |
936 } |
937 } |
937 } |
938 |
938 |
939 /*****************************************************************************/ |
939 /*****************************************************************************/ |
940 |
940 |
941 int ecrt_slave_config_idn(ec_slave_config_t *sc, uint16_t idn, |
941 int ecrt_slave_config_idn(ec_slave_config_t *sc, uint8_t drive_no, |
942 ec_al_state_t state, const uint8_t *data, size_t size) |
942 uint16_t idn, ec_al_state_t state, const uint8_t *data, |
|
943 size_t size) |
943 { |
944 { |
944 ec_slave_t *slave = sc->slave; |
945 ec_slave_t *slave = sc->slave; |
945 ec_soe_request_t *req; |
946 ec_soe_request_t *req; |
946 int ret; |
947 int ret; |
947 |
948 |
948 EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, idn = 0x%04X, state = %u, " |
949 EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, drive_no = %u, idn = 0x%04X, " |
949 "data = 0x%p, size = %zu)\n", |
950 "state = %u, data = 0x%p, size = %zu)\n", |
950 __func__, sc, idn, state, data, size); |
951 __func__, sc, drive_no, idn, state, data, size); |
|
952 |
|
953 if (drive_no > 7) { |
|
954 EC_CONFIG_ERR(sc, "Invalid drive number!\n"); |
|
955 return -EINVAL; |
|
956 } |
951 |
957 |
952 if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) { |
958 if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) { |
953 EC_CONFIG_ERR(sc, "AL state for IDN config" |
959 EC_CONFIG_ERR(sc, "AL state for IDN config" |
954 " must be PREOP or SAFEOP!\n"); |
960 " must be PREOP or SAFEOP!\n"); |
955 return -EINVAL; |
961 return -EINVAL; |
965 " IDN configuration!\n"); |
971 " IDN configuration!\n"); |
966 return -ENOMEM; |
972 return -ENOMEM; |
967 } |
973 } |
968 |
974 |
969 ec_soe_request_init(req); |
975 ec_soe_request_init(req); |
|
976 ec_soe_request_set_drive_no(req, drive_no); |
970 ec_soe_request_set_idn(req, idn); |
977 ec_soe_request_set_idn(req, idn); |
971 req->al_state = state; |
978 req->al_state = state; |
972 |
979 |
973 ret = ec_soe_request_copy_data(req, data, size); |
980 ret = ec_soe_request_copy_data(req, data, size); |
974 if (ret < 0) { |
981 if (ret < 0) { |