equal
deleted
inserted
replaced
342 } |
342 } |
343 |
343 |
344 /*****************************************************************************/ |
344 /*****************************************************************************/ |
345 |
345 |
346 /** Check for pending register requests and process one. |
346 /** Check for pending register requests and process one. |
347 * |
347 * |
348 * \return non-zero, if a register request is processed. |
348 * \return non-zero, if a register request is processed. |
349 */ |
349 */ |
350 int ec_fsm_master_action_process_register( |
350 int ec_fsm_master_action_process_register( |
351 ec_fsm_master_t *fsm /**< Master state machine. */ |
351 ec_fsm_master_t *fsm /**< Master state machine. */ |
352 ) |
352 ) |
947 request->nwords, slave->ring_position); |
947 request->nwords, slave->ring_position); |
948 |
948 |
949 if (request->offset <= 4 && request->offset + request->nwords > 4) { |
949 if (request->offset <= 4 && request->offset + request->nwords > 4) { |
950 // alias was written |
950 // alias was written |
951 slave->sii.alias = EC_READ_U16(request->words + 4); |
951 slave->sii.alias = EC_READ_U16(request->words + 4); |
|
952 // TODO: read alias from register 0x0012 |
952 } |
953 } |
953 // TODO: Evaluate other SII contents! |
954 // TODO: Evaluate other SII contents! |
954 |
955 |
955 request->state = EC_INT_REQUEST_SUCCESS; |
956 request->state = EC_INT_REQUEST_SUCCESS; |
956 wake_up(&master->sii_queue); |
957 wake_up(&master->sii_queue); |
1087 request->state = EC_INT_REQUEST_FAILURE; |
1088 request->state = EC_INT_REQUEST_FAILURE; |
1088 wake_up(&master->reg_queue); |
1089 wake_up(&master->reg_queue); |
1089 ec_fsm_master_restart(fsm); |
1090 ec_fsm_master_restart(fsm); |
1090 return; |
1091 return; |
1091 } |
1092 } |
1092 |
1093 |
1093 if (datagram->working_counter == 1) { |
1094 if (datagram->working_counter == 1) { |
1094 if (request->dir == EC_DIR_INPUT) { // read request |
1095 if (request->dir == EC_DIR_INPUT) { // read request |
1095 if (request->data) |
1096 if (request->data) |
1096 kfree(request->data); |
1097 kfree(request->data); |
1097 request->data = kmalloc(request->length, GFP_KERNEL); |
1098 request->data = kmalloc(request->length, GFP_KERNEL); |