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);