364 request->state = EC_INT_REQUEST_BUSY; |
364 request->state = EC_INT_REQUEST_BUSY; |
365 |
365 |
366 // found pending request; process it! |
366 // found pending request; process it! |
367 if (master->debug_level) |
367 if (master->debug_level) |
368 EC_DBG("Processing register request for slave %u, " |
368 EC_DBG("Processing register request for slave %u, " |
369 "offset 0x%04x, length %u...\n", |
369 "offset 0x%04x, length %zu...\n", |
370 request->slave->ring_position, |
370 request->slave->ring_position, |
371 request->offset, request->length); |
371 request->offset, request->length); |
372 |
372 |
373 if (request->length > fsm->datagram->mem_size) { |
373 if (request->length > fsm->datagram->mem_size) { |
374 EC_ERR("Request length (%u) exceeds maximum " |
374 EC_ERR("Request length (%zu) exceeds maximum " |
375 "datagram size (%u)!\n", request->length, |
375 "datagram size (%zu)!\n", request->length, |
376 fsm->datagram->mem_size); |
376 fsm->datagram->mem_size); |
377 request->state = EC_INT_REQUEST_FAILURE; |
377 request->state = EC_INT_REQUEST_FAILURE; |
378 wake_up(&master->reg_queue); |
378 wake_up(&master->reg_queue); |
379 continue; |
379 continue; |
380 } |
380 } |
941 return; |
941 return; |
942 } |
942 } |
943 |
943 |
944 // finished writing SII |
944 // finished writing SII |
945 if (master->debug_level) |
945 if (master->debug_level) |
946 EC_DBG("Finished writing %u words of SII data to slave %u.\n", |
946 EC_DBG("Finished writing %zu words of SII data to slave %u.\n", |
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); |
988 return; |
988 return; |
989 } |
989 } |
990 |
990 |
991 // finished transferring FoE |
991 // finished transferring FoE |
992 if (master->debug_level) |
992 if (master->debug_level) |
993 EC_DBG("Successfully transferred %u bytes of FoE data from/to" |
993 EC_DBG("Successfully transferred %zu bytes of FoE data from/to" |
994 " slave %u.\n", request->data_size, slave->ring_position); |
994 " slave %u.\n", request->data_size, slave->ring_position); |
995 |
995 |
996 request->state = EC_INT_REQUEST_SUCCESS; |
996 request->state = EC_INT_REQUEST_SUCCESS; |
997 wake_up(&master->foe_queue); |
997 wake_up(&master->foe_queue); |
998 |
998 |
1094 if (request->dir == EC_DIR_INPUT) { // read request |
1094 if (request->dir == EC_DIR_INPUT) { // read request |
1095 if (request->data) |
1095 if (request->data) |
1096 kfree(request->data); |
1096 kfree(request->data); |
1097 request->data = kmalloc(request->length, GFP_KERNEL); |
1097 request->data = kmalloc(request->length, GFP_KERNEL); |
1098 if (!request->data) { |
1098 if (!request->data) { |
1099 EC_ERR("Failed to allocate %u bytes of memory for" |
1099 EC_ERR("Failed to allocate %zu bytes of memory for" |
1100 " register data.\n", request->length); |
1100 " register data.\n", request->length); |
1101 request->state = EC_INT_REQUEST_FAILURE; |
1101 request->state = EC_INT_REQUEST_FAILURE; |
1102 wake_up(&master->reg_queue); |
1102 wake_up(&master->reg_queue); |
1103 ec_fsm_master_restart(fsm); |
1103 ec_fsm_master_restart(fsm); |
1104 return; |
1104 return; |