1142 if (down_interruptible(&master->master_sem)) { |
1142 if (down_interruptible(&master->master_sem)) { |
1143 ec_reg_request_clear(&request); |
1143 ec_reg_request_clear(&request); |
1144 return -EINTR; |
1144 return -EINTR; |
1145 } |
1145 } |
1146 |
1146 |
1147 if (!(slave = ec_master_find_slave(master, 0, io.slave_position))) { |
1147 if (io.emergency) { |
1148 up(&master->master_sem); |
1148 request.ring_position = io.slave_position; |
1149 ec_reg_request_clear(&request); |
1149 // schedule request. |
1150 EC_MASTER_ERR(master, "Slave %u does not exist!\n", |
1150 list_add_tail(&request.list, &master->emerg_reg_requests); |
1151 io.slave_position); |
1151 } |
1152 return -EINVAL; |
1152 else { |
1153 } |
1153 if (!(slave = ec_master_find_slave(master, 0, io.slave_position))) { |
1154 |
1154 up(&master->master_sem); |
1155 // schedule request. |
1155 ec_reg_request_clear(&request); |
1156 list_add_tail(&request.list, &slave->reg_requests); |
1156 EC_MASTER_ERR(master, "Slave %u does not exist!\n", |
|
1157 io.slave_position); |
|
1158 return -EINVAL; |
|
1159 } |
|
1160 |
|
1161 // schedule request. |
|
1162 list_add_tail(&request.list, &slave->reg_requests); |
|
1163 } |
1157 |
1164 |
1158 up(&master->master_sem); |
1165 up(&master->master_sem); |
1159 |
1166 |
1160 // wait for processing through FSM |
1167 // wait for processing through FSM |
1161 if (wait_event_interruptible(master->request_queue, |
1168 if (wait_event_interruptible(master->request_queue, |