Lines Matching refs:iforce
37 static int make_magnitude_modifier(struct iforce* iforce, in make_magnitude_modifier() argument
43 mutex_lock(&iforce->mem_mutex); in make_magnitude_modifier()
44 if (allocate_resource(&(iforce->device_memory), mod_chunk, 2, in make_magnitude_modifier()
45 iforce->device_memory.start, iforce->device_memory.end, 2L, in make_magnitude_modifier()
47 mutex_unlock(&iforce->mem_mutex); in make_magnitude_modifier()
50 mutex_unlock(&iforce->mem_mutex); in make_magnitude_modifier()
57 iforce_send_packet(iforce, FF_CMD_MAGNITUDE, data); in make_magnitude_modifier()
67 static int make_period_modifier(struct iforce* iforce, in make_period_modifier() argument
76 mutex_lock(&iforce->mem_mutex); in make_period_modifier()
77 if (allocate_resource(&(iforce->device_memory), mod_chunk, 0x0c, in make_period_modifier()
78 iforce->device_memory.start, iforce->device_memory.end, 2L, in make_period_modifier()
80 mutex_unlock(&iforce->mem_mutex); in make_period_modifier()
83 mutex_unlock(&iforce->mem_mutex); in make_period_modifier()
96 iforce_send_packet(iforce, FF_CMD_PERIOD, data); in make_period_modifier()
105 static int make_envelope_modifier(struct iforce* iforce, in make_envelope_modifier() argument
116 mutex_lock(&iforce->mem_mutex); in make_envelope_modifier()
117 if (allocate_resource(&(iforce->device_memory), mod_chunk, 0x0e, in make_envelope_modifier()
118 iforce->device_memory.start, iforce->device_memory.end, 2L, in make_envelope_modifier()
120 mutex_unlock(&iforce->mem_mutex); in make_envelope_modifier()
123 mutex_unlock(&iforce->mem_mutex); in make_envelope_modifier()
137 iforce_send_packet(iforce, FF_CMD_ENVELOPE, data); in make_envelope_modifier()
146 static int make_condition_modifier(struct iforce* iforce, in make_condition_modifier() argument
153 mutex_lock(&iforce->mem_mutex); in make_condition_modifier()
154 if (allocate_resource(&(iforce->device_memory), mod_chunk, 8, in make_condition_modifier()
155 iforce->device_memory.start, iforce->device_memory.end, 2L, in make_condition_modifier()
157 mutex_unlock(&iforce->mem_mutex); in make_condition_modifier()
160 mutex_unlock(&iforce->mem_mutex); in make_condition_modifier()
180 iforce_send_packet(iforce, FF_CMD_CONDITION, data); in make_condition_modifier()
186 static unsigned char find_button(struct iforce *iforce, signed short button) in find_button() argument
190 for (i = 1; iforce->type->btn[i] >= 0; i++) in find_button()
191 if (iforce->type->btn[i] == button) in find_button()
200 static int need_condition_modifier(struct iforce *iforce, in need_condition_modifier() argument
208 dev_warn(&iforce->dev->dev, "bad effect type in %s\n", in need_condition_modifier()
228 static int need_magnitude_modifier(struct iforce *iforce, in need_magnitude_modifier() argument
233 dev_warn(&iforce->dev->dev, "bad effect type in %s\n", in need_magnitude_modifier()
245 static int need_envelope_modifier(struct iforce *iforce, struct ff_effect *old, in need_envelope_modifier() argument
266 dev_warn(&iforce->dev->dev, "bad effect type in %s\n", in need_envelope_modifier()
277 static int need_period_modifier(struct iforce *iforce, struct ff_effect *old, in need_period_modifier() argument
281 dev_warn(&iforce->dev->dev, "bad effect type in %s\n", in need_period_modifier()
309 static int make_core(struct iforce* iforce, u16 id, u16 mod_id1, u16 mod_id2, in make_core() argument
321 data[2] = LO(axes) | find_button(iforce, button); in make_core()
342 iforce_send_packet(iforce, FF_CMD_EFFECT, data); in make_core()
345 if (test_bit(FF_CORE_SHOULD_PLAY, iforce->core_effects[id].flags)) { in make_core()
347 iforce_control_playback(iforce, id, 1); in make_core()
357 int iforce_upload_periodic(struct iforce *iforce, struct ff_effect *effect, struct ff_effect *old) in iforce_upload_periodic() argument
361 struct iforce_core_effect* core_effect = iforce->core_effects + core_id; in iforce_upload_periodic()
362 struct resource* mod1_chunk = &(iforce->core_effects[core_id].mod1_chunk); in iforce_upload_periodic()
363 struct resource* mod2_chunk = &(iforce->core_effects[core_id].mod2_chunk); in iforce_upload_periodic()
368 if (!old || need_period_modifier(iforce, old, effect)) { in iforce_upload_periodic()
369 param1_err = make_period_modifier(iforce, mod1_chunk, in iforce_upload_periodic()
378 if (!old || need_envelope_modifier(iforce, old, effect)) { in iforce_upload_periodic()
379 param2_err = make_envelope_modifier(iforce, mod2_chunk, in iforce_upload_periodic()
400 core_err = make_core(iforce, effect->id, in iforce_upload_periodic()
428 int iforce_upload_constant(struct iforce *iforce, struct ff_effect *effect, struct ff_effect *old) in iforce_upload_constant() argument
431 struct iforce_core_effect* core_effect = iforce->core_effects + core_id; in iforce_upload_constant()
432 struct resource* mod1_chunk = &(iforce->core_effects[core_id].mod1_chunk); in iforce_upload_constant()
433 struct resource* mod2_chunk = &(iforce->core_effects[core_id].mod2_chunk); in iforce_upload_constant()
438 if (!old || need_magnitude_modifier(iforce, old, effect)) { in iforce_upload_constant()
439 param1_err = make_magnitude_modifier(iforce, mod1_chunk, in iforce_upload_constant()
447 if (!old || need_envelope_modifier(iforce, old, effect)) { in iforce_upload_constant()
448 param2_err = make_envelope_modifier(iforce, mod2_chunk, in iforce_upload_constant()
460 core_err = make_core(iforce, effect->id, in iforce_upload_constant()
484 int iforce_upload_condition(struct iforce *iforce, struct ff_effect *effect, struct ff_effect *old) in iforce_upload_condition() argument
487 struct iforce_core_effect* core_effect = iforce->core_effects + core_id; in iforce_upload_condition()
500 if (!old || need_condition_modifier(iforce, old, effect)) { in iforce_upload_condition()
501 param_err = make_condition_modifier(iforce, mod1_chunk, in iforce_upload_condition()
513 param_err = make_condition_modifier(iforce, mod2_chunk, in iforce_upload_condition()
528 core_err = make_core(iforce, effect->id, in iforce_upload_condition()