Lines Matching refs:msc
154 static int magicmouse_firm_touch(struct magicmouse_sc *msc) in magicmouse_firm_touch() argument
162 for (ii = 0; ii < msc->ntouches; ii++) { in magicmouse_firm_touch()
163 int idx = msc->tracking_ids[ii]; in magicmouse_firm_touch()
164 if (msc->touches[idx].size < 8) { in magicmouse_firm_touch()
177 static void magicmouse_emit_buttons(struct magicmouse_sc *msc, int state) in magicmouse_emit_buttons() argument
179 int last_state = test_bit(BTN_LEFT, msc->input->key) << 0 | in magicmouse_emit_buttons()
180 test_bit(BTN_RIGHT, msc->input->key) << 1 | in magicmouse_emit_buttons()
181 test_bit(BTN_MIDDLE, msc->input->key) << 2; in magicmouse_emit_buttons()
194 } else if ((id = magicmouse_firm_touch(msc)) >= 0) { in magicmouse_emit_buttons()
195 int x = msc->touches[id].x; in magicmouse_emit_buttons()
204 input_report_key(msc->input, BTN_MIDDLE, state & 4); in magicmouse_emit_buttons()
207 input_report_key(msc->input, BTN_LEFT, state & 1); in magicmouse_emit_buttons()
208 input_report_key(msc->input, BTN_RIGHT, state & 2); in magicmouse_emit_buttons()
211 msc->scroll_accel = SCROLL_ACCEL_DEFAULT; in magicmouse_emit_buttons()
214 static void magicmouse_emit_touch(struct magicmouse_sc *msc, int raw_id, u8 *tdata) in magicmouse_emit_touch() argument
216 struct input_dev *input = msc->input; in magicmouse_emit_touch()
258 msc->tracking_ids[raw_id] = id; in magicmouse_emit_touch()
259 msc->touches[id].x = x; in magicmouse_emit_touch()
260 msc->touches[id].y = y; in magicmouse_emit_touch()
261 msc->touches[id].size = size; in magicmouse_emit_touch()
270 int step_x = msc->touches[id].scroll_x - x; in magicmouse_emit_touch()
271 int step_y = msc->touches[id].scroll_y - y; in magicmouse_emit_touch()
274 ((64 - (int)scroll_speed) * msc->scroll_accel) / in magicmouse_emit_touch()
277 int step_x_hr = msc->touches[id].scroll_x_hr - x; in magicmouse_emit_touch()
278 int step_y_hr = msc->touches[id].scroll_y_hr - y; in magicmouse_emit_touch()
283 msc->touches[id].scroll_x = x; in magicmouse_emit_touch()
284 msc->touches[id].scroll_y = y; in magicmouse_emit_touch()
285 msc->touches[id].scroll_x_hr = x; in magicmouse_emit_touch()
286 msc->touches[id].scroll_y_hr = y; in magicmouse_emit_touch()
287 msc->touches[id].scroll_x_active = false; in magicmouse_emit_touch()
288 msc->touches[id].scroll_y_active = false; in magicmouse_emit_touch()
292 msc->scroll_jiffies + HZ / 2)) in magicmouse_emit_touch()
293 msc->scroll_accel = max_t(int, in magicmouse_emit_touch()
294 msc->scroll_accel - 1, 1); in magicmouse_emit_touch()
296 msc->scroll_accel = SCROLL_ACCEL_DEFAULT; in magicmouse_emit_touch()
300 step_x /= (64 - (int)scroll_speed) * msc->scroll_accel; in magicmouse_emit_touch()
302 msc->touches[id].scroll_x -= step_x * in magicmouse_emit_touch()
303 (64 - scroll_speed) * msc->scroll_accel; in magicmouse_emit_touch()
304 msc->scroll_jiffies = now; in magicmouse_emit_touch()
308 step_y /= (64 - (int)scroll_speed) * msc->scroll_accel; in magicmouse_emit_touch()
310 msc->touches[id].scroll_y -= step_y * in magicmouse_emit_touch()
311 (64 - scroll_speed) * msc->scroll_accel; in magicmouse_emit_touch()
312 msc->scroll_jiffies = now; in magicmouse_emit_touch()
316 if (!msc->touches[id].scroll_x_active && in magicmouse_emit_touch()
318 msc->touches[id].scroll_x_active = true; in magicmouse_emit_touch()
319 msc->touches[id].scroll_x_hr = x; in magicmouse_emit_touch()
325 msc->touches[id].scroll_x_active) { in magicmouse_emit_touch()
326 msc->touches[id].scroll_x_hr -= step_x_hr * in magicmouse_emit_touch()
333 if (!msc->touches[id].scroll_y_active && in magicmouse_emit_touch()
335 msc->touches[id].scroll_y_active = true; in magicmouse_emit_touch()
336 msc->touches[id].scroll_y_hr = y; in magicmouse_emit_touch()
342 msc->touches[id].scroll_y_active) { in magicmouse_emit_touch()
343 msc->touches[id].scroll_y_hr -= step_y_hr * in magicmouse_emit_touch()
354 msc->ntouches++; in magicmouse_emit_touch()
389 struct magicmouse_sc *msc = hid_get_drvdata(hdev); in magicmouse_raw_event() local
390 struct input_dev *input = msc->input; in magicmouse_raw_event()
405 msc->ntouches = 0; in magicmouse_raw_event()
407 magicmouse_emit_touch(msc, ii, data + ii * 9 + 4); in magicmouse_raw_event()
427 msc->ntouches = 0; in magicmouse_raw_event()
429 magicmouse_emit_touch(msc, ii, data + ii * 9 + 12); in magicmouse_raw_event()
443 msc->ntouches = 0; in magicmouse_raw_event()
445 magicmouse_emit_touch(msc, ii, data + ii * 8 + 6); in magicmouse_raw_event()
471 msc->ntouches = 0; in magicmouse_raw_event()
473 magicmouse_emit_touch(msc, ii, data + ii * 8 + 14); in magicmouse_raw_event()
504 magicmouse_emit_buttons(msc, clicks & 3); in magicmouse_raw_event()
524 struct magicmouse_sc *msc = hid_get_drvdata(hdev); in magicmouse_event() local
525 if ((msc->input->id.product == USB_DEVICE_ID_APPLE_MAGICMOUSE2 || in magicmouse_event()
526 msc->input->id.product == USB_DEVICE_ID_APPLE_MAGICMOUSE2_USBC) && in magicmouse_event()
705 struct magicmouse_sc *msc = hid_get_drvdata(hdev); in magicmouse_input_mapping() local
707 if (!msc->input) in magicmouse_input_mapping()
708 msc->input = hi->input; in magicmouse_input_mapping()
725 struct magicmouse_sc *msc = hid_get_drvdata(hdev); in magicmouse_input_configured() local
728 ret = magicmouse_setup_input(msc->input, hdev); in magicmouse_input_configured()
732 msc->input = NULL; in magicmouse_input_configured()
785 struct magicmouse_sc *msc = in magicmouse_enable_mt_work() local
789 ret = magicmouse_enable_multitouch(msc->hdev); in magicmouse_enable_mt_work()
791 hid_err(msc->hdev, "unable to request touch data (%d)\n", ret); in magicmouse_enable_mt_work()
839 struct magicmouse_sc *msc = timer_container_of(msc, t, battery_timer); in magicmouse_battery_timer_tick() local
840 struct hid_device *hdev = msc->hdev; in magicmouse_battery_timer_tick()
843 mod_timer(&msc->battery_timer, in magicmouse_battery_timer_tick()
851 struct magicmouse_sc *msc; in magicmouse_probe() local
855 msc = devm_kzalloc(&hdev->dev, sizeof(*msc), GFP_KERNEL); in magicmouse_probe()
856 if (msc == NULL) { in magicmouse_probe()
861 msc->scroll_accel = SCROLL_ACCEL_DEFAULT; in magicmouse_probe()
862 msc->hdev = hdev; in magicmouse_probe()
863 INIT_DEFERRABLE_WORK(&msc->work, magicmouse_enable_mt_work); in magicmouse_probe()
865 msc->quirks = id->driver_data; in magicmouse_probe()
866 hid_set_drvdata(hdev, msc); in magicmouse_probe()
882 timer_setup(&msc->battery_timer, magicmouse_battery_timer_tick, 0); in magicmouse_probe()
883 mod_timer(&msc->battery_timer, in magicmouse_probe()
893 if (!msc->input) { in magicmouse_probe()
948 schedule_delayed_work(&msc->work, msecs_to_jiffies(500)); in magicmouse_probe()
955 timer_delete_sync(&msc->battery_timer); in magicmouse_probe()
963 struct magicmouse_sc *msc = hid_get_drvdata(hdev); in magicmouse_remove() local
965 if (msc) { in magicmouse_remove()
966 cancel_delayed_work_sync(&msc->work); in magicmouse_remove()
969 timer_delete_sync(&msc->battery_timer); in magicmouse_remove()