Lines Matching refs:pxrc
21 struct pxrc {
32 struct pxrc *pxrc = urb->context;
42 dev_dbg(&pxrc->intf->dev,
51 dev_dbg(&pxrc->intf->dev, "%s - urb shutting down with status: %d\n",
55 dev_dbg(&pxrc->intf->dev, "%s - nonzero urb status received: %d\n",
61 input_report_abs(pxrc->input, ABS_X, data[0]);
62 input_report_abs(pxrc->input, ABS_Y, data[2]);
63 input_report_abs(pxrc->input, ABS_RX, data[3]);
64 input_report_abs(pxrc->input, ABS_RY, data[4]);
65 input_report_abs(pxrc->input, ABS_RUDDER, data[5]);
66 input_report_abs(pxrc->input, ABS_THROTTLE, data[6]);
67 input_report_abs(pxrc->input, ABS_MISC, data[7]);
69 input_report_key(pxrc->input, BTN_A, data[1]);
76 dev_err(&pxrc->intf->dev,
83 struct pxrc *pxrc = input_get_drvdata(input);
86 mutex_lock(&pxrc->pm_mutex);
87 retval = usb_submit_urb(pxrc->urb, GFP_KERNEL);
89 dev_err(&pxrc->intf->dev,
96 pxrc->is_open = true;
99 mutex_unlock(&pxrc->pm_mutex);
105 struct pxrc *pxrc = input_get_drvdata(input);
107 mutex_lock(&pxrc->pm_mutex);
108 usb_kill_urb(pxrc->urb);
109 pxrc->is_open = false;
110 mutex_unlock(&pxrc->pm_mutex);
115 struct pxrc *pxrc = _pxrc;
117 usb_free_urb(pxrc->urb);
124 struct pxrc *pxrc;
141 pxrc = devm_kzalloc(&intf->dev, sizeof(*pxrc), GFP_KERNEL);
142 if (!pxrc)
145 mutex_init(&pxrc->pm_mutex);
146 pxrc->intf = intf;
148 usb_set_intfdata(pxrc->intf, pxrc);
155 pxrc->urb = usb_alloc_urb(0, GFP_KERNEL);
156 if (!pxrc->urb)
159 error = devm_add_action_or_reset(&intf->dev, pxrc_free_urb, pxrc);
163 usb_fill_int_urb(pxrc->urb, udev,
165 xfer_buf, xfer_size, pxrc_usb_irq, pxrc, 1);
167 pxrc->input = devm_input_allocate_device(&intf->dev);
168 if (!pxrc->input) {
173 pxrc->input->name = "PXRC Flight Controller Adapter";
175 usb_make_path(udev, pxrc->phys, sizeof(pxrc->phys));
176 strlcat(pxrc->phys, "/input0", sizeof(pxrc->phys));
177 pxrc->input->phys = pxrc->phys;
179 usb_to_input_id(udev, &pxrc->input->id);
181 pxrc->input->open = pxrc_open;
182 pxrc->input->close = pxrc_close;
184 input_set_capability(pxrc->input, EV_KEY, BTN_A);
185 input_set_abs_params(pxrc->input, ABS_X, 0, 255, 0, 0);
186 input_set_abs_params(pxrc->input, ABS_Y, 0, 255, 0, 0);
187 input_set_abs_params(pxrc->input, ABS_RX, 0, 255, 0, 0);
188 input_set_abs_params(pxrc->input, ABS_RY, 0, 255, 0, 0);
189 input_set_abs_params(pxrc->input, ABS_RUDDER, 0, 255, 0, 0);
190 input_set_abs_params(pxrc->input, ABS_THROTTLE, 0, 255, 0, 0);
191 input_set_abs_params(pxrc->input, ABS_MISC, 0, 255, 0, 0);
193 input_set_drvdata(pxrc->input, pxrc);
195 error = input_register_device(pxrc->input);
209 struct pxrc *pxrc = usb_get_intfdata(intf);
211 mutex_lock(&pxrc->pm_mutex);
212 if (pxrc->is_open)
213 usb_kill_urb(pxrc->urb);
214 mutex_unlock(&pxrc->pm_mutex);
221 struct pxrc *pxrc = usb_get_intfdata(intf);
224 mutex_lock(&pxrc->pm_mutex);
225 if (pxrc->is_open && usb_submit_urb(pxrc->urb, GFP_KERNEL) < 0)
228 mutex_unlock(&pxrc->pm_mutex);
234 struct pxrc *pxrc = usb_get_intfdata(intf);
236 mutex_lock(&pxrc->pm_mutex);
237 usb_kill_urb(pxrc->urb);
243 struct pxrc *pxrc = usb_get_intfdata(intf);
246 if (pxrc->is_open && usb_submit_urb(pxrc->urb, GFP_KERNEL) < 0)
249 mutex_unlock(&pxrc->pm_mutex);
266 .name = "pxrc",