pcu 454 drivers/gpu/drm/i915/gvt/interrupt.c DEFINE_GVT_GEN8_INTEL_GVT_IRQ_INFO(pcu, GEN8_PCU_ISR); pcu 183 drivers/input/misc/ims-pcu.c static void ims_pcu_buttons_report(struct ims_pcu *pcu, u32 data) pcu 185 drivers/input/misc/ims-pcu.c struct ims_pcu_buttons *buttons = &pcu->buttons; pcu 199 drivers/input/misc/ims-pcu.c static int ims_pcu_setup_buttons(struct ims_pcu *pcu, pcu 203 drivers/input/misc/ims-pcu.c struct ims_pcu_buttons *buttons = &pcu->buttons; pcu 210 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 216 drivers/input/misc/ims-pcu.c "IMS PCU#%d Button Interface", pcu->device_no); pcu 218 drivers/input/misc/ims-pcu.c usb_make_path(pcu->udev, buttons->phys, sizeof(buttons->phys)); pcu 225 drivers/input/misc/ims-pcu.c usb_to_input_id(pcu->udev, &input->id); pcu 226 drivers/input/misc/ims-pcu.c input->dev.parent = &pcu->ctrl_intf->dev; pcu 239 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 250 drivers/input/misc/ims-pcu.c static void ims_pcu_destroy_buttons(struct ims_pcu *pcu) pcu 252 drivers/input/misc/ims-pcu.c struct ims_pcu_buttons *buttons = &pcu->buttons; pcu 262 drivers/input/misc/ims-pcu.c static void ims_pcu_gamepad_report(struct ims_pcu *pcu, u32 data) pcu 264 drivers/input/misc/ims-pcu.c struct ims_pcu_gamepad *gamepad = pcu->gamepad; pcu 284 drivers/input/misc/ims-pcu.c static int ims_pcu_setup_gamepad(struct ims_pcu *pcu) pcu 293 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 302 drivers/input/misc/ims-pcu.c "IMS PCU#%d Gamepad Interface", pcu->device_no); pcu 304 drivers/input/misc/ims-pcu.c usb_make_path(pcu->udev, gamepad->phys, sizeof(gamepad->phys)); pcu 309 drivers/input/misc/ims-pcu.c usb_to_input_id(pcu->udev, &input->id); pcu 310 drivers/input/misc/ims-pcu.c input->dev.parent = &pcu->ctrl_intf->dev; pcu 326 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 332 drivers/input/misc/ims-pcu.c pcu->gamepad = gamepad; pcu 341 drivers/input/misc/ims-pcu.c static void ims_pcu_destroy_gamepad(struct ims_pcu *pcu) pcu 343 drivers/input/misc/ims-pcu.c struct ims_pcu_gamepad *gamepad = pcu->gamepad; pcu 408 drivers/input/misc/ims-pcu.c static void ims_pcu_report_events(struct ims_pcu *pcu) pcu 410 drivers/input/misc/ims-pcu.c u32 data = get_unaligned_be32(&pcu->read_buf[3]); pcu 412 drivers/input/misc/ims-pcu.c ims_pcu_buttons_report(pcu, data & ~IMS_PCU_GAMEPAD_MASK); pcu 413 drivers/input/misc/ims-pcu.c if (pcu->gamepad) pcu 414 drivers/input/misc/ims-pcu.c ims_pcu_gamepad_report(pcu, data); pcu 417 drivers/input/misc/ims-pcu.c static void ims_pcu_handle_response(struct ims_pcu *pcu) pcu 419 drivers/input/misc/ims-pcu.c switch (pcu->read_buf[0]) { pcu 421 drivers/input/misc/ims-pcu.c if (likely(pcu->setup_complete)) pcu 422 drivers/input/misc/ims-pcu.c ims_pcu_report_events(pcu); pcu 431 drivers/input/misc/ims-pcu.c if (pcu->read_buf[0] == pcu->expected_response && pcu 432 drivers/input/misc/ims-pcu.c pcu->read_buf[1] == pcu->ack_id - 1) { pcu 434 drivers/input/misc/ims-pcu.c memcpy(pcu->cmd_buf, pcu->read_buf, pcu->read_pos); pcu 435 drivers/input/misc/ims-pcu.c pcu->cmd_buf_len = pcu->read_pos; pcu 436 drivers/input/misc/ims-pcu.c complete(&pcu->cmd_done); pcu 442 drivers/input/misc/ims-pcu.c static void ims_pcu_process_data(struct ims_pcu *pcu, struct urb *urb) pcu 447 drivers/input/misc/ims-pcu.c u8 data = pcu->urb_in_buf[i]; pcu 450 drivers/input/misc/ims-pcu.c if (!pcu->have_stx && data != IMS_PCU_PROTOCOL_STX) pcu 453 drivers/input/misc/ims-pcu.c if (pcu->have_dle) { pcu 454 drivers/input/misc/ims-pcu.c pcu->have_dle = false; pcu 455 drivers/input/misc/ims-pcu.c pcu->read_buf[pcu->read_pos++] = data; pcu 456 drivers/input/misc/ims-pcu.c pcu->check_sum += data; pcu 462 drivers/input/misc/ims-pcu.c if (pcu->have_stx) pcu 463 drivers/input/misc/ims-pcu.c dev_warn(pcu->dev, pcu 465 drivers/input/misc/ims-pcu.c pcu->read_pos); pcu 466 drivers/input/misc/ims-pcu.c pcu->have_stx = true; pcu 467 drivers/input/misc/ims-pcu.c pcu->have_dle = false; pcu 468 drivers/input/misc/ims-pcu.c pcu->read_pos = 0; pcu 469 drivers/input/misc/ims-pcu.c pcu->check_sum = 0; pcu 473 drivers/input/misc/ims-pcu.c pcu->have_dle = true; pcu 477 drivers/input/misc/ims-pcu.c if (pcu->read_pos < IMS_PCU_MIN_PACKET_LEN) { pcu 478 drivers/input/misc/ims-pcu.c dev_warn(pcu->dev, pcu 480 drivers/input/misc/ims-pcu.c pcu->read_pos); pcu 481 drivers/input/misc/ims-pcu.c } else if (pcu->check_sum != 0) { pcu 482 drivers/input/misc/ims-pcu.c dev_warn(pcu->dev, pcu 484 drivers/input/misc/ims-pcu.c pcu->read_pos); pcu 486 drivers/input/misc/ims-pcu.c ims_pcu_handle_response(pcu); pcu 489 drivers/input/misc/ims-pcu.c pcu->have_stx = false; pcu 490 drivers/input/misc/ims-pcu.c pcu->have_dle = false; pcu 491 drivers/input/misc/ims-pcu.c pcu->read_pos = 0; pcu 495 drivers/input/misc/ims-pcu.c pcu->read_buf[pcu->read_pos++] = data; pcu 496 drivers/input/misc/ims-pcu.c pcu->check_sum += data; pcu 509 drivers/input/misc/ims-pcu.c static int ims_pcu_send_cmd_chunk(struct ims_pcu *pcu, pcu 514 drivers/input/misc/ims-pcu.c error = usb_bulk_msg(pcu->udev, pcu 515 drivers/input/misc/ims-pcu.c usb_sndbulkpipe(pcu->udev, pcu 516 drivers/input/misc/ims-pcu.c pcu->ep_out->bEndpointAddress), pcu 517 drivers/input/misc/ims-pcu.c pcu->urb_out_buf, len, pcu 520 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, pcu 529 drivers/input/misc/ims-pcu.c static int ims_pcu_send_command(struct ims_pcu *pcu, pcu 540 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = IMS_PCU_PROTOCOL_STX; pcu 543 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = command; pcu 546 drivers/input/misc/ims-pcu.c ack_id = pcu->ack_id++; pcu 548 drivers/input/misc/ims-pcu.c ack_id = pcu->ack_id++; pcu 551 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = IMS_PCU_PROTOCOL_DLE; pcu 553 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = ack_id; pcu 559 drivers/input/misc/ims-pcu.c if (count + delta >= pcu->max_out_size) { pcu 560 drivers/input/misc/ims-pcu.c error = ims_pcu_send_cmd_chunk(pcu, command, pcu 569 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = IMS_PCU_PROTOCOL_DLE; pcu 571 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = data[i]; pcu 578 drivers/input/misc/ims-pcu.c if (count + delta >= pcu->max_out_size) { pcu 579 drivers/input/misc/ims-pcu.c error = ims_pcu_send_cmd_chunk(pcu, command, ++chunk, count); pcu 587 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = IMS_PCU_PROTOCOL_DLE; pcu 589 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = csum; pcu 590 drivers/input/misc/ims-pcu.c pcu->urb_out_buf[count++] = IMS_PCU_PROTOCOL_ETX; pcu 592 drivers/input/misc/ims-pcu.c return ims_pcu_send_cmd_chunk(pcu, command, ++chunk, count); pcu 595 drivers/input/misc/ims-pcu.c static int __ims_pcu_execute_command(struct ims_pcu *pcu, pcu 601 drivers/input/misc/ims-pcu.c pcu->expected_response = expected_response; pcu 602 drivers/input/misc/ims-pcu.c init_completion(&pcu->cmd_done); pcu 604 drivers/input/misc/ims-pcu.c error = ims_pcu_send_command(pcu, command, data, len); pcu 609 drivers/input/misc/ims-pcu.c !wait_for_completion_timeout(&pcu->cmd_done, pcu 611 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, "Command 0x%02x timed out\n", command); pcu 618 drivers/input/misc/ims-pcu.c #define ims_pcu_execute_command(pcu, code, data, len) \ pcu 619 drivers/input/misc/ims-pcu.c __ims_pcu_execute_command(pcu, \ pcu 624 drivers/input/misc/ims-pcu.c #define ims_pcu_execute_query(pcu, code) \ pcu 625 drivers/input/misc/ims-pcu.c ims_pcu_execute_command(pcu, code, NULL, 0) pcu 649 drivers/input/misc/ims-pcu.c static int __ims_pcu_execute_bl_command(struct ims_pcu *pcu, pcu 655 drivers/input/misc/ims-pcu.c pcu->cmd_buf[0] = command; pcu 657 drivers/input/misc/ims-pcu.c memcpy(&pcu->cmd_buf[1], data, len); pcu 659 drivers/input/misc/ims-pcu.c error = __ims_pcu_execute_command(pcu, pcu 660 drivers/input/misc/ims-pcu.c IMS_PCU_CMD_BOOTLOADER, pcu->cmd_buf, len + 1, pcu 664 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 666 drivers/input/misc/ims-pcu.c pcu->cmd_buf[0], error); pcu 670 drivers/input/misc/ims-pcu.c if (expected_response && pcu->cmd_buf[2] != expected_response) { pcu 671 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 673 drivers/input/misc/ims-pcu.c pcu->cmd_buf[2], expected_response); pcu 680 drivers/input/misc/ims-pcu.c #define ims_pcu_execute_bl_command(pcu, code, data, len, timeout) \ pcu 681 drivers/input/misc/ims-pcu.c __ims_pcu_execute_bl_command(pcu, \ pcu 691 drivers/input/misc/ims-pcu.c static int ims_pcu_get_info(struct ims_pcu *pcu) pcu 695 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, GET_INFO); pcu 697 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 702 drivers/input/misc/ims-pcu.c memcpy(pcu->part_number, pcu 703 drivers/input/misc/ims-pcu.c &pcu->cmd_buf[IMS_PCU_INFO_PART_OFFSET], pcu 704 drivers/input/misc/ims-pcu.c sizeof(pcu->part_number)); pcu 705 drivers/input/misc/ims-pcu.c memcpy(pcu->date_of_manufacturing, pcu 706 drivers/input/misc/ims-pcu.c &pcu->cmd_buf[IMS_PCU_INFO_DOM_OFFSET], pcu 707 drivers/input/misc/ims-pcu.c sizeof(pcu->date_of_manufacturing)); pcu 708 drivers/input/misc/ims-pcu.c memcpy(pcu->serial_number, pcu 709 drivers/input/misc/ims-pcu.c &pcu->cmd_buf[IMS_PCU_INFO_SERIAL_OFFSET], pcu 710 drivers/input/misc/ims-pcu.c sizeof(pcu->serial_number)); pcu 715 drivers/input/misc/ims-pcu.c static int ims_pcu_set_info(struct ims_pcu *pcu) pcu 719 drivers/input/misc/ims-pcu.c memcpy(&pcu->cmd_buf[IMS_PCU_INFO_PART_OFFSET], pcu 720 drivers/input/misc/ims-pcu.c pcu->part_number, sizeof(pcu->part_number)); pcu 721 drivers/input/misc/ims-pcu.c memcpy(&pcu->cmd_buf[IMS_PCU_INFO_DOM_OFFSET], pcu 722 drivers/input/misc/ims-pcu.c pcu->date_of_manufacturing, sizeof(pcu->date_of_manufacturing)); pcu 723 drivers/input/misc/ims-pcu.c memcpy(&pcu->cmd_buf[IMS_PCU_INFO_SERIAL_OFFSET], pcu 724 drivers/input/misc/ims-pcu.c pcu->serial_number, sizeof(pcu->serial_number)); pcu 726 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, SET_INFO, pcu 727 drivers/input/misc/ims-pcu.c &pcu->cmd_buf[IMS_PCU_DATA_OFFSET], pcu 730 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 739 drivers/input/misc/ims-pcu.c static int ims_pcu_switch_to_bootloader(struct ims_pcu *pcu) pcu 744 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, JUMP_TO_BTLDR, NULL, 0); pcu 746 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 780 drivers/input/misc/ims-pcu.c static int ims_pcu_verify_block(struct ims_pcu *pcu, pcu 786 drivers/input/misc/ims-pcu.c fragment = (void *)&pcu->cmd_buf[1]; pcu 790 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_bl_command(pcu, READ_APP, NULL, 5, pcu 793 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 799 drivers/input/misc/ims-pcu.c fragment = (void *)&pcu->cmd_buf[IMS_PCU_BL_DATA_OFFSET]; pcu 802 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 810 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 819 drivers/input/misc/ims-pcu.c static int ims_pcu_flash_firmware(struct ims_pcu *pcu, pcu 830 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_bl_command(pcu, ERASE_APP, NULL, 0, 2000); pcu 832 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 848 drivers/input/misc/ims-pcu.c fragment = (void *)&pcu->cmd_buf[1]; pcu 853 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_bl_command(pcu, PROGRAM_DEVICE, pcu 857 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 863 drivers/input/misc/ims-pcu.c if (addr >= pcu->fw_start_addr && addr < pcu->fw_end_addr) { pcu 864 drivers/input/misc/ims-pcu.c error = ims_pcu_verify_block(pcu, addr, len, rec->data); pcu 870 drivers/input/misc/ims-pcu.c pcu->update_firmware_status = (count * 100) / n_fw_records; pcu 875 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_bl_command(pcu, PROGRAM_COMPLETE, pcu 878 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 885 drivers/input/misc/ims-pcu.c static int ims_pcu_handle_firmware_update(struct ims_pcu *pcu, pcu 891 drivers/input/misc/ims-pcu.c dev_info(pcu->dev, "Updating firmware %s, size: %zu\n", pcu 896 drivers/input/misc/ims-pcu.c retval = ims_pcu_flash_firmware(pcu, fw, n_fw_records); pcu 900 drivers/input/misc/ims-pcu.c retval = ims_pcu_execute_bl_command(pcu, LAUNCH_APP, NULL, 0, 0); pcu 902 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 907 drivers/input/misc/ims-pcu.c pcu->update_firmware_status = retval; pcu 908 drivers/input/misc/ims-pcu.c sysfs_notify(&pcu->dev->kobj, NULL, "update_firmware_status"); pcu 915 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = context; pcu 919 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to get firmware %s\n", pcu 926 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Firmware %s is invalid\n", pcu 931 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 932 drivers/input/misc/ims-pcu.c ims_pcu_handle_firmware_update(pcu, fw); pcu 933 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 938 drivers/input/misc/ims-pcu.c complete(&pcu->async_firmware_done); pcu 952 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = pcu 957 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 959 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, SET_BRIGHTNESS, pcu 962 drivers/input/misc/ims-pcu.c dev_warn(pcu->dev, pcu 966 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 976 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = pcu 981 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 983 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, GET_BRIGHTNESS); pcu 985 drivers/input/misc/ims-pcu.c dev_warn(pcu->dev, pcu 992 drivers/input/misc/ims-pcu.c get_unaligned_le16(&pcu->cmd_buf[IMS_PCU_DATA_OFFSET]); pcu 995 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1000 drivers/input/misc/ims-pcu.c static int ims_pcu_setup_backlight(struct ims_pcu *pcu) pcu 1002 drivers/input/misc/ims-pcu.c struct ims_pcu_backlight *backlight = &pcu->backlight; pcu 1006 drivers/input/misc/ims-pcu.c "pcu%d::kbd_backlight", pcu->device_no); pcu 1014 drivers/input/misc/ims-pcu.c error = led_classdev_register(pcu->dev, &backlight->cdev); pcu 1016 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1025 drivers/input/misc/ims-pcu.c static void ims_pcu_destroy_backlight(struct ims_pcu *pcu) pcu 1027 drivers/input/misc/ims-pcu.c struct ims_pcu_backlight *backlight = &pcu->backlight; pcu 1048 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1051 drivers/input/misc/ims-pcu.c char *field = (char *)pcu + attr->field_offset; pcu 1062 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1065 drivers/input/misc/ims-pcu.c char *field = (char *)pcu + attr->field_offset; pcu 1076 drivers/input/misc/ims-pcu.c error = mutex_lock_interruptible(&pcu->cmd_mutex); pcu 1083 drivers/input/misc/ims-pcu.c error = ims_pcu_set_info(pcu); pcu 1089 drivers/input/misc/ims-pcu.c ims_pcu_get_info(pcu); pcu 1091 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1124 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1135 drivers/input/misc/ims-pcu.c dev_info(pcu->dev, "Attempting to reset device\n"); pcu 1137 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, PCU_RESET, &reset_byte, 1); pcu 1139 drivers/input/misc/ims-pcu.c dev_info(pcu->dev, pcu 1155 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1167 drivers/input/misc/ims-pcu.c error = mutex_lock_interruptible(&pcu->cmd_mutex); pcu 1171 drivers/input/misc/ims-pcu.c error = request_ihex_firmware(&fw, IMS_PCU_FIRMWARE_NAME, pcu->dev); pcu 1173 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to request firmware %s, error: %d\n", pcu 1186 drivers/input/misc/ims-pcu.c if (pcu->bootloader_mode) pcu 1187 drivers/input/misc/ims-pcu.c error = ims_pcu_handle_firmware_update(pcu, fw); pcu 1189 drivers/input/misc/ims-pcu.c error = ims_pcu_switch_to_bootloader(pcu); pcu 1194 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1207 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1209 drivers/input/misc/ims-pcu.c return scnprintf(buf, PAGE_SIZE, "%d\n", pcu->update_firmware_status); pcu 1233 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1236 drivers/input/misc/ims-pcu.c if (pcu->bootloader_mode) { pcu 1259 drivers/input/misc/ims-pcu.c static int ims_pcu_read_ofn_config(struct ims_pcu *pcu, u8 addr, u8 *data) pcu 1264 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, OFN_GET_CONFIG, pcu 1269 drivers/input/misc/ims-pcu.c result = (s16)get_unaligned_le16(pcu->cmd_buf + OFN_REG_RESULT_OFFSET); pcu 1274 drivers/input/misc/ims-pcu.c *data = pcu->cmd_buf[OFN_REG_RESULT_OFFSET]; pcu 1278 drivers/input/misc/ims-pcu.c static int ims_pcu_write_ofn_config(struct ims_pcu *pcu, u8 addr, u8 data) pcu 1284 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_command(pcu, OFN_SET_CONFIG, pcu 1289 drivers/input/misc/ims-pcu.c result = (s16)get_unaligned_le16(pcu->cmd_buf + OFN_REG_RESULT_OFFSET); pcu 1301 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1305 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1306 drivers/input/misc/ims-pcu.c error = ims_pcu_read_ofn_config(pcu, pcu->ofn_reg_addr, &data); pcu 1307 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1320 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1328 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1329 drivers/input/misc/ims-pcu.c error = ims_pcu_write_ofn_config(pcu, pcu->ofn_reg_addr, value); pcu 1330 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1343 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1346 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1347 drivers/input/misc/ims-pcu.c error = scnprintf(buf, PAGE_SIZE, "%x\n", pcu->ofn_reg_addr); pcu 1348 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1358 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1366 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1367 drivers/input/misc/ims-pcu.c pcu->ofn_reg_addr = value; pcu 1368 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1387 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1393 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1394 drivers/input/misc/ims-pcu.c error = ims_pcu_read_ofn_config(pcu, attr->addr, &data); pcu 1395 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1408 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 1422 drivers/input/misc/ims-pcu.c mutex_lock(&pcu->cmd_mutex); pcu 1424 drivers/input/misc/ims-pcu.c error = ims_pcu_read_ofn_config(pcu, attr->addr, &data); pcu 1431 drivers/input/misc/ims-pcu.c error = ims_pcu_write_ofn_config(pcu, attr->addr, data); pcu 1434 drivers/input/misc/ims-pcu.c mutex_unlock(&pcu->cmd_mutex); pcu 1476 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = urb->context; pcu 1489 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, "%s - urb shutting down with status: %d\n", pcu 1493 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, "%s - nonzero urb status received: %d\n", pcu 1498 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, "%s: received %d: %*ph\n", __func__, pcu 1499 drivers/input/misc/ims-pcu.c urb->actual_length, urb->actual_length, pcu->urb_in_buf); pcu 1501 drivers/input/misc/ims-pcu.c if (urb == pcu->urb_in) pcu 1502 drivers/input/misc/ims-pcu.c ims_pcu_process_data(pcu, urb); pcu 1507 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "%s - usb_submit_urb failed with result %d\n", pcu 1511 drivers/input/misc/ims-pcu.c static int ims_pcu_buffers_alloc(struct ims_pcu *pcu) pcu 1515 drivers/input/misc/ims-pcu.c pcu->urb_in_buf = usb_alloc_coherent(pcu->udev, pcu->max_in_size, pcu 1516 drivers/input/misc/ims-pcu.c GFP_KERNEL, &pcu->read_dma); pcu 1517 drivers/input/misc/ims-pcu.c if (!pcu->urb_in_buf) { pcu 1518 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1523 drivers/input/misc/ims-pcu.c pcu->urb_in = usb_alloc_urb(0, GFP_KERNEL); pcu 1524 drivers/input/misc/ims-pcu.c if (!pcu->urb_in) { pcu 1525 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to allocate input URB\n"); pcu 1530 drivers/input/misc/ims-pcu.c pcu->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; pcu 1531 drivers/input/misc/ims-pcu.c pcu->urb_in->transfer_dma = pcu->read_dma; pcu 1533 drivers/input/misc/ims-pcu.c usb_fill_bulk_urb(pcu->urb_in, pcu->udev, pcu 1534 drivers/input/misc/ims-pcu.c usb_rcvbulkpipe(pcu->udev, pcu 1535 drivers/input/misc/ims-pcu.c pcu->ep_in->bEndpointAddress), pcu 1536 drivers/input/misc/ims-pcu.c pcu->urb_in_buf, pcu->max_in_size, pcu 1537 drivers/input/misc/ims-pcu.c ims_pcu_irq, pcu); pcu 1543 drivers/input/misc/ims-pcu.c pcu->urb_out_buf = kmalloc(pcu->max_out_size, GFP_KERNEL); pcu 1544 drivers/input/misc/ims-pcu.c if (!pcu->urb_out_buf) { pcu 1545 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to allocate memory for write buffer\n"); pcu 1550 drivers/input/misc/ims-pcu.c pcu->urb_ctrl_buf = usb_alloc_coherent(pcu->udev, pcu->max_ctrl_size, pcu 1551 drivers/input/misc/ims-pcu.c GFP_KERNEL, &pcu->ctrl_dma); pcu 1552 drivers/input/misc/ims-pcu.c if (!pcu->urb_ctrl_buf) { pcu 1553 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1559 drivers/input/misc/ims-pcu.c pcu->urb_ctrl = usb_alloc_urb(0, GFP_KERNEL); pcu 1560 drivers/input/misc/ims-pcu.c if (!pcu->urb_ctrl) { pcu 1561 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to allocate input URB\n"); pcu 1566 drivers/input/misc/ims-pcu.c pcu->urb_ctrl->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; pcu 1567 drivers/input/misc/ims-pcu.c pcu->urb_ctrl->transfer_dma = pcu->ctrl_dma; pcu 1569 drivers/input/misc/ims-pcu.c usb_fill_int_urb(pcu->urb_ctrl, pcu->udev, pcu 1570 drivers/input/misc/ims-pcu.c usb_rcvintpipe(pcu->udev, pcu 1571 drivers/input/misc/ims-pcu.c pcu->ep_ctrl->bEndpointAddress), pcu 1572 drivers/input/misc/ims-pcu.c pcu->urb_ctrl_buf, pcu->max_ctrl_size, pcu 1573 drivers/input/misc/ims-pcu.c ims_pcu_irq, pcu, pcu->ep_ctrl->bInterval); pcu 1578 drivers/input/misc/ims-pcu.c usb_free_coherent(pcu->udev, pcu->max_ctrl_size, pcu 1579 drivers/input/misc/ims-pcu.c pcu->urb_ctrl_buf, pcu->ctrl_dma); pcu 1581 drivers/input/misc/ims-pcu.c kfree(pcu->urb_out_buf); pcu 1583 drivers/input/misc/ims-pcu.c usb_free_urb(pcu->urb_in); pcu 1585 drivers/input/misc/ims-pcu.c usb_free_coherent(pcu->udev, pcu->max_in_size, pcu 1586 drivers/input/misc/ims-pcu.c pcu->urb_in_buf, pcu->read_dma); pcu 1590 drivers/input/misc/ims-pcu.c static void ims_pcu_buffers_free(struct ims_pcu *pcu) pcu 1592 drivers/input/misc/ims-pcu.c usb_kill_urb(pcu->urb_in); pcu 1593 drivers/input/misc/ims-pcu.c usb_free_urb(pcu->urb_in); pcu 1595 drivers/input/misc/ims-pcu.c usb_free_coherent(pcu->udev, pcu->max_out_size, pcu 1596 drivers/input/misc/ims-pcu.c pcu->urb_in_buf, pcu->read_dma); pcu 1598 drivers/input/misc/ims-pcu.c kfree(pcu->urb_out_buf); pcu 1600 drivers/input/misc/ims-pcu.c usb_kill_urb(pcu->urb_ctrl); pcu 1601 drivers/input/misc/ims-pcu.c usb_free_urb(pcu->urb_ctrl); pcu 1603 drivers/input/misc/ims-pcu.c usb_free_coherent(pcu->udev, pcu->max_ctrl_size, pcu 1604 drivers/input/misc/ims-pcu.c pcu->urb_ctrl_buf, pcu->ctrl_dma); pcu 1653 drivers/input/misc/ims-pcu.c static int ims_pcu_parse_cdc_data(struct usb_interface *intf, struct ims_pcu *pcu) pcu 1662 drivers/input/misc/ims-pcu.c pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev, pcu 1664 drivers/input/misc/ims-pcu.c if (!pcu->ctrl_intf) pcu 1667 drivers/input/misc/ims-pcu.c alt = pcu->ctrl_intf->cur_altsetting; pcu 1672 drivers/input/misc/ims-pcu.c pcu->ep_ctrl = &alt->endpoint[0].desc; pcu 1673 drivers/input/misc/ims-pcu.c pcu->max_ctrl_size = usb_endpoint_maxp(pcu->ep_ctrl); pcu 1675 drivers/input/misc/ims-pcu.c pcu->data_intf = usb_ifnum_to_if(pcu->udev, pcu 1677 drivers/input/misc/ims-pcu.c if (!pcu->data_intf) pcu 1680 drivers/input/misc/ims-pcu.c alt = pcu->data_intf->cur_altsetting; pcu 1682 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1688 drivers/input/misc/ims-pcu.c pcu->ep_out = &alt->endpoint[0].desc; pcu 1689 drivers/input/misc/ims-pcu.c if (!usb_endpoint_is_bulk_out(pcu->ep_out)) { pcu 1690 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1695 drivers/input/misc/ims-pcu.c pcu->max_out_size = usb_endpoint_maxp(pcu->ep_out); pcu 1696 drivers/input/misc/ims-pcu.c if (pcu->max_out_size < 8) { pcu 1697 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1699 drivers/input/misc/ims-pcu.c pcu->max_out_size); pcu 1703 drivers/input/misc/ims-pcu.c pcu->ep_in = &alt->endpoint[1].desc; pcu 1704 drivers/input/misc/ims-pcu.c if (!usb_endpoint_is_bulk_in(pcu->ep_in)) { pcu 1705 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1710 drivers/input/misc/ims-pcu.c pcu->max_in_size = usb_endpoint_maxp(pcu->ep_in); pcu 1711 drivers/input/misc/ims-pcu.c if (pcu->max_in_size < 8) { pcu 1712 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1714 drivers/input/misc/ims-pcu.c pcu->max_in_size); pcu 1721 drivers/input/misc/ims-pcu.c static int ims_pcu_start_io(struct ims_pcu *pcu) pcu 1725 drivers/input/misc/ims-pcu.c error = usb_submit_urb(pcu->urb_ctrl, GFP_KERNEL); pcu 1727 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1733 drivers/input/misc/ims-pcu.c error = usb_submit_urb(pcu->urb_in, GFP_KERNEL); pcu 1735 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1738 drivers/input/misc/ims-pcu.c usb_kill_urb(pcu->urb_ctrl); pcu 1745 drivers/input/misc/ims-pcu.c static void ims_pcu_stop_io(struct ims_pcu *pcu) pcu 1747 drivers/input/misc/ims-pcu.c usb_kill_urb(pcu->urb_in); pcu 1748 drivers/input/misc/ims-pcu.c usb_kill_urb(pcu->urb_ctrl); pcu 1751 drivers/input/misc/ims-pcu.c static int ims_pcu_line_setup(struct ims_pcu *pcu) pcu 1753 drivers/input/misc/ims-pcu.c struct usb_host_interface *interface = pcu->ctrl_intf->cur_altsetting; pcu 1754 drivers/input/misc/ims-pcu.c struct usb_cdc_line_coding *line = (void *)pcu->cmd_buf; pcu 1761 drivers/input/misc/ims-pcu.c error = usb_control_msg(pcu->udev, usb_sndctrlpipe(pcu->udev, 0), pcu 1768 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to set line coding, error: %d\n", pcu 1773 drivers/input/misc/ims-pcu.c error = usb_control_msg(pcu->udev, usb_sndctrlpipe(pcu->udev, 0), pcu 1779 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Failed to set line state, error: %d\n", pcu 1787 drivers/input/misc/ims-pcu.c static int ims_pcu_get_device_info(struct ims_pcu *pcu) pcu 1791 drivers/input/misc/ims-pcu.c error = ims_pcu_get_info(pcu); pcu 1795 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, GET_FW_VERSION); pcu 1797 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1802 drivers/input/misc/ims-pcu.c snprintf(pcu->fw_version, sizeof(pcu->fw_version), pcu 1804 drivers/input/misc/ims-pcu.c pcu->cmd_buf[2], pcu->cmd_buf[3], pcu->cmd_buf[4], pcu->cmd_buf[5], pcu 1805 drivers/input/misc/ims-pcu.c pcu->cmd_buf[6], pcu->cmd_buf[7]); pcu 1807 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, GET_BL_VERSION); pcu 1809 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1814 drivers/input/misc/ims-pcu.c snprintf(pcu->bl_version, sizeof(pcu->bl_version), pcu 1816 drivers/input/misc/ims-pcu.c pcu->cmd_buf[2], pcu->cmd_buf[3], pcu->cmd_buf[4], pcu->cmd_buf[5], pcu 1817 drivers/input/misc/ims-pcu.c pcu->cmd_buf[6], pcu->cmd_buf[7]); pcu 1819 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, RESET_REASON); pcu 1821 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1826 drivers/input/misc/ims-pcu.c snprintf(pcu->reset_reason, sizeof(pcu->reset_reason), pcu 1827 drivers/input/misc/ims-pcu.c "%02x", pcu->cmd_buf[IMS_PCU_DATA_OFFSET]); pcu 1829 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, pcu 1831 drivers/input/misc/ims-pcu.c pcu->part_number, pcu 1832 drivers/input/misc/ims-pcu.c pcu->date_of_manufacturing, pcu 1833 drivers/input/misc/ims-pcu.c pcu->serial_number, pcu 1834 drivers/input/misc/ims-pcu.c pcu->fw_version, pcu 1835 drivers/input/misc/ims-pcu.c pcu->bl_version, pcu 1836 drivers/input/misc/ims-pcu.c pcu->reset_reason); pcu 1841 drivers/input/misc/ims-pcu.c static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id) pcu 1845 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_query(pcu, GET_DEVICE_ID); pcu 1847 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1852 drivers/input/misc/ims-pcu.c *device_id = pcu->cmd_buf[IMS_PCU_DATA_OFFSET]; pcu 1853 drivers/input/misc/ims-pcu.c dev_dbg(pcu->dev, "Detected device ID: %d\n", *device_id); pcu 1858 drivers/input/misc/ims-pcu.c static int ims_pcu_init_application_mode(struct ims_pcu *pcu) pcu 1865 drivers/input/misc/ims-pcu.c error = ims_pcu_get_device_info(pcu); pcu 1871 drivers/input/misc/ims-pcu.c error = ims_pcu_identify_type(pcu, &pcu->device_id); pcu 1873 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, pcu 1883 drivers/input/misc/ims-pcu.c if (pcu->device_id >= ARRAY_SIZE(ims_pcu_device_info) || pcu 1884 drivers/input/misc/ims-pcu.c !ims_pcu_device_info[pcu->device_id].keymap) { pcu 1885 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Device ID %d is not valid\n", pcu->device_id); pcu 1891 drivers/input/misc/ims-pcu.c pcu->device_no = atomic_inc_return(&device_no); pcu 1896 drivers/input/misc/ims-pcu.c if (pcu->device_id != IMS_PCU_PCU_B_DEVICE_ID) { pcu 1897 drivers/input/misc/ims-pcu.c error = sysfs_create_group(&pcu->dev->kobj, pcu 1903 drivers/input/misc/ims-pcu.c error = ims_pcu_setup_backlight(pcu); pcu 1907 drivers/input/misc/ims-pcu.c info = &ims_pcu_device_info[pcu->device_id]; pcu 1908 drivers/input/misc/ims-pcu.c error = ims_pcu_setup_buttons(pcu, info->keymap, info->keymap_len); pcu 1913 drivers/input/misc/ims-pcu.c error = ims_pcu_setup_gamepad(pcu); pcu 1918 drivers/input/misc/ims-pcu.c pcu->setup_complete = true; pcu 1923 drivers/input/misc/ims-pcu.c ims_pcu_destroy_buttons(pcu); pcu 1925 drivers/input/misc/ims-pcu.c ims_pcu_destroy_backlight(pcu); pcu 1929 drivers/input/misc/ims-pcu.c static void ims_pcu_destroy_application_mode(struct ims_pcu *pcu) pcu 1931 drivers/input/misc/ims-pcu.c if (pcu->setup_complete) { pcu 1932 drivers/input/misc/ims-pcu.c pcu->setup_complete = false; pcu 1935 drivers/input/misc/ims-pcu.c if (pcu->gamepad) pcu 1936 drivers/input/misc/ims-pcu.c ims_pcu_destroy_gamepad(pcu); pcu 1937 drivers/input/misc/ims-pcu.c ims_pcu_destroy_buttons(pcu); pcu 1938 drivers/input/misc/ims-pcu.c ims_pcu_destroy_backlight(pcu); pcu 1940 drivers/input/misc/ims-pcu.c if (pcu->device_id != IMS_PCU_PCU_B_DEVICE_ID) pcu 1941 drivers/input/misc/ims-pcu.c sysfs_remove_group(&pcu->dev->kobj, pcu 1946 drivers/input/misc/ims-pcu.c static int ims_pcu_init_bootloader_mode(struct ims_pcu *pcu) pcu 1950 drivers/input/misc/ims-pcu.c error = ims_pcu_execute_bl_command(pcu, QUERY_DEVICE, NULL, 0, pcu 1953 drivers/input/misc/ims-pcu.c dev_err(pcu->dev, "Bootloader does not respond, aborting\n"); pcu 1957 drivers/input/misc/ims-pcu.c pcu->fw_start_addr = pcu 1958 drivers/input/misc/ims-pcu.c get_unaligned_le32(&pcu->cmd_buf[IMS_PCU_DATA_OFFSET + 11]); pcu 1959 drivers/input/misc/ims-pcu.c pcu->fw_end_addr = pcu 1960 drivers/input/misc/ims-pcu.c get_unaligned_le32(&pcu->cmd_buf[IMS_PCU_DATA_OFFSET + 15]); pcu 1962 drivers/input/misc/ims-pcu.c dev_info(pcu->dev, pcu 1964 drivers/input/misc/ims-pcu.c pcu->fw_start_addr, pcu->fw_end_addr); pcu 1968 drivers/input/misc/ims-pcu.c pcu->dev, GFP_KERNEL, pcu, pcu 1972 drivers/input/misc/ims-pcu.c complete(&pcu->async_firmware_done); pcu 1978 drivers/input/misc/ims-pcu.c static void ims_pcu_destroy_bootloader_mode(struct ims_pcu *pcu) pcu 1981 drivers/input/misc/ims-pcu.c wait_for_completion(&pcu->async_firmware_done); pcu 1993 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu; pcu 1996 drivers/input/misc/ims-pcu.c pcu = kzalloc(sizeof(struct ims_pcu), GFP_KERNEL); pcu 1997 drivers/input/misc/ims-pcu.c if (!pcu) pcu 2000 drivers/input/misc/ims-pcu.c pcu->dev = &intf->dev; pcu 2001 drivers/input/misc/ims-pcu.c pcu->udev = udev; pcu 2002 drivers/input/misc/ims-pcu.c pcu->bootloader_mode = id->driver_info == IMS_PCU_BOOTLOADER_MODE; pcu 2003 drivers/input/misc/ims-pcu.c mutex_init(&pcu->cmd_mutex); pcu 2004 drivers/input/misc/ims-pcu.c init_completion(&pcu->cmd_done); pcu 2005 drivers/input/misc/ims-pcu.c init_completion(&pcu->async_firmware_done); pcu 2007 drivers/input/misc/ims-pcu.c error = ims_pcu_parse_cdc_data(intf, pcu); pcu 2012 drivers/input/misc/ims-pcu.c pcu->data_intf, pcu); pcu 2020 drivers/input/misc/ims-pcu.c usb_set_intfdata(pcu->ctrl_intf, pcu); pcu 2021 drivers/input/misc/ims-pcu.c usb_set_intfdata(pcu->data_intf, pcu); pcu 2023 drivers/input/misc/ims-pcu.c error = ims_pcu_buffers_alloc(pcu); pcu 2027 drivers/input/misc/ims-pcu.c error = ims_pcu_start_io(pcu); pcu 2031 drivers/input/misc/ims-pcu.c error = ims_pcu_line_setup(pcu); pcu 2039 drivers/input/misc/ims-pcu.c error = pcu->bootloader_mode ? pcu 2040 drivers/input/misc/ims-pcu.c ims_pcu_init_bootloader_mode(pcu) : pcu 2041 drivers/input/misc/ims-pcu.c ims_pcu_init_application_mode(pcu); pcu 2050 drivers/input/misc/ims-pcu.c ims_pcu_stop_io(pcu); pcu 2052 drivers/input/misc/ims-pcu.c ims_pcu_buffers_free(pcu); pcu 2054 drivers/input/misc/ims-pcu.c usb_driver_release_interface(&ims_pcu_driver, pcu->data_intf); pcu 2056 drivers/input/misc/ims-pcu.c kfree(pcu); pcu 2062 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 2076 drivers/input/misc/ims-pcu.c ims_pcu_stop_io(pcu); pcu 2078 drivers/input/misc/ims-pcu.c if (pcu->bootloader_mode) pcu 2079 drivers/input/misc/ims-pcu.c ims_pcu_destroy_bootloader_mode(pcu); pcu 2081 drivers/input/misc/ims-pcu.c ims_pcu_destroy_application_mode(pcu); pcu 2083 drivers/input/misc/ims-pcu.c ims_pcu_buffers_free(pcu); pcu 2084 drivers/input/misc/ims-pcu.c kfree(pcu); pcu 2091 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 2095 drivers/input/misc/ims-pcu.c ims_pcu_stop_io(pcu); pcu 2102 drivers/input/misc/ims-pcu.c struct ims_pcu *pcu = usb_get_intfdata(intf); pcu 2107 drivers/input/misc/ims-pcu.c retval = ims_pcu_start_io(pcu); pcu 2109 drivers/input/misc/ims-pcu.c retval = ims_pcu_line_setup(pcu);