Lines Matching refs:mei_dev

78 static int mei_vsc_fw_status(struct mei_device *mei_dev,  in mei_vsc_fw_status()  argument
89 static inline enum mei_pg_state mei_vsc_pg_state(struct mei_device *mei_dev) in mei_vsc_pg_state() argument
94 static void mei_vsc_intr_enable(struct mei_device *mei_dev) in mei_vsc_intr_enable() argument
96 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_intr_enable()
101 static void mei_vsc_intr_disable(struct mei_device *mei_dev) in mei_vsc_intr_disable() argument
103 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_intr_disable()
109 static void mei_vsc_intr_clear(struct mei_device *mei_dev) in mei_vsc_intr_clear() argument
114 static void mei_vsc_synchronize_irq(struct mei_device *mei_dev) in mei_vsc_synchronize_irq() argument
116 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_synchronize_irq()
121 static int mei_vsc_hw_config(struct mei_device *mei_dev) in mei_vsc_hw_config() argument
126 static bool mei_vsc_host_is_ready(struct mei_device *mei_dev) in mei_vsc_host_is_ready() argument
128 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_host_is_ready()
133 static bool mei_vsc_hw_is_ready(struct mei_device *mei_dev) in mei_vsc_hw_is_ready() argument
135 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_hw_is_ready()
140 static int mei_vsc_hw_start(struct mei_device *mei_dev) in mei_vsc_hw_start() argument
142 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_hw_start()
155 dev_err(mei_dev->dev, "wait fw ready failed: %d\n", ret); in mei_vsc_hw_start()
164 static bool mei_vsc_hbuf_is_ready(struct mei_device *mei_dev) in mei_vsc_hbuf_is_ready() argument
166 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_hbuf_is_ready()
171 static int mei_vsc_hbuf_empty_slots(struct mei_device *mei_dev) in mei_vsc_hbuf_empty_slots() argument
176 static u32 mei_vsc_hbuf_depth(const struct mei_device *mei_dev) in mei_vsc_hbuf_depth() argument
181 static int mei_vsc_write(struct mei_device *mei_dev, in mei_vsc_write() argument
185 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_write()
207 static inline u32 mei_vsc_read(const struct mei_device *mei_dev) in mei_vsc_read() argument
209 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_read()
222 static int mei_vsc_count_full_read_slots(struct mei_device *mei_dev) in mei_vsc_count_full_read_slots() argument
227 static int mei_vsc_read_slots(struct mei_device *mei_dev, unsigned char *buf, in mei_vsc_read_slots() argument
230 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_read_slots()
242 static bool mei_vsc_pg_in_transition(struct mei_device *mei_dev) in mei_vsc_pg_in_transition() argument
244 return mei_dev->pg_event >= MEI_PG_EVENT_WAIT && in mei_vsc_pg_in_transition()
245 mei_dev->pg_event <= MEI_PG_EVENT_INTR_WAIT; in mei_vsc_pg_in_transition()
248 static bool mei_vsc_pg_is_enabled(struct mei_device *mei_dev) in mei_vsc_pg_is_enabled() argument
253 static int mei_vsc_hw_reset(struct mei_device *mei_dev, bool intr_enable) in mei_vsc_hw_reset() argument
255 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_hw_reset()
262 return vsc_tp_init(hw->tp, mei_dev->dev); in mei_vsc_hw_reset()
295 struct mei_device *mei_dev = context; in mei_vsc_event_cb() local
296 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_event_cb()
301 if (mei_dev->dev_state == MEI_DEV_RESETTING || in mei_vsc_event_cb()
302 mei_dev->dev_state == MEI_DEV_INITIALIZING) in mei_vsc_event_cb()
307 guard(mutex)(&mei_dev->device_lock); in mei_vsc_event_cb()
311 slots = mei_count_full_read_slots(mei_dev); in mei_vsc_event_cb()
313 ret = mei_irq_read_handler(mei_dev, &cmpl_list, &slots); in mei_vsc_event_cb()
316 if (mei_dev->dev_state != MEI_DEV_RESETTING && in mei_vsc_event_cb()
317 mei_dev->dev_state != MEI_DEV_POWER_DOWN) in mei_vsc_event_cb()
318 schedule_work(&mei_dev->reset_work); in mei_vsc_event_cb()
325 mei_dev->hbuf_is_ready = mei_hbuf_is_ready(mei_dev); in mei_vsc_event_cb()
326 ret = mei_irq_write_handler(mei_dev, &cmpl_list); in mei_vsc_event_cb()
328 dev_err(mei_dev->dev, "dispatch write request failed: %d\n", ret); in mei_vsc_event_cb()
330 mei_dev->hbuf_is_ready = mei_hbuf_is_ready(mei_dev); in mei_vsc_event_cb()
331 mei_irq_compl_handler(mei_dev, &cmpl_list); in mei_vsc_event_cb()
337 struct mei_device *mei_dev; in mei_vsc_probe() local
346 mei_dev = devm_kzalloc(dev, size_add(sizeof(*mei_dev), sizeof(*hw)), in mei_vsc_probe()
348 if (!mei_dev) in mei_vsc_probe()
351 mei_device_init(mei_dev, dev, false, &mei_vsc_hw_ops); in mei_vsc_probe()
352 mei_dev->fw_f_fw_ver_supported = 0; in mei_vsc_probe()
353 mei_dev->kind = "ivsc"; in mei_vsc_probe()
355 hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_probe()
359 platform_set_drvdata(pdev, mei_dev); in mei_vsc_probe()
361 vsc_tp_register_event_cb(tp, mei_vsc_event_cb, mei_dev); in mei_vsc_probe()
363 ret = mei_start(mei_dev); in mei_vsc_probe()
369 ret = mei_register(mei_dev, dev); in mei_vsc_probe()
373 pm_runtime_enable(mei_dev->dev); in mei_vsc_probe()
378 mei_stop(mei_dev); in mei_vsc_probe()
381 mei_cancel_work(mei_dev); in mei_vsc_probe()
385 mei_disable_interrupts(mei_dev); in mei_vsc_probe()
392 struct mei_device *mei_dev = platform_get_drvdata(pdev); in mei_vsc_remove() local
393 struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev); in mei_vsc_remove()
395 pm_runtime_disable(mei_dev->dev); in mei_vsc_remove()
397 mei_stop(mei_dev); in mei_vsc_remove()
401 mei_disable_interrupts(mei_dev); in mei_vsc_remove()
403 mei_deregister(mei_dev); in mei_vsc_remove()
408 struct mei_device *mei_dev; in mei_vsc_suspend() local
411 mei_dev = dev_get_drvdata(dev); in mei_vsc_suspend()
412 if (!mei_dev) in mei_vsc_suspend()
415 mutex_lock(&mei_dev->device_lock); in mei_vsc_suspend()
417 if (!mei_write_is_idle(mei_dev)) in mei_vsc_suspend()
420 mutex_unlock(&mei_dev->device_lock); in mei_vsc_suspend()
427 struct mei_device *mei_dev; in mei_vsc_resume() local
429 mei_dev = dev_get_drvdata(dev); in mei_vsc_resume()
430 if (!mei_dev) in mei_vsc_resume()