Lines Matching refs:self
60 static int cw1200_spi_memcpy_fromio(struct hwbus_priv *self, in cw1200_spi_memcpy_fromio() argument
92 if (self->func->bits_per_word == 8) in cw1200_spi_memcpy_fromio()
99 ret = spi_sync(self->func, &m); in cw1200_spi_memcpy_fromio()
115 if (self->func->bits_per_word == 8) in cw1200_spi_memcpy_fromio()
126 static int cw1200_spi_memcpy_toio(struct hwbus_priv *self, in cw1200_spi_memcpy_toio() argument
157 if (self->func->bits_per_word == 8) in cw1200_spi_memcpy_toio()
179 rval = spi_sync(self->func, &m); in cw1200_spi_memcpy_toio()
187 if (self->func->bits_per_word == 8) in cw1200_spi_memcpy_toio()
197 static void cw1200_spi_lock(struct hwbus_priv *self) in cw1200_spi_lock() argument
205 add_wait_queue(&self->wq, &wait); in cw1200_spi_lock()
206 spin_lock_irqsave(&self->lock, flags); in cw1200_spi_lock()
209 if (!self->claimed) in cw1200_spi_lock()
211 spin_unlock_irqrestore(&self->lock, flags); in cw1200_spi_lock()
213 spin_lock_irqsave(&self->lock, flags); in cw1200_spi_lock()
216 self->claimed = 1; in cw1200_spi_lock()
217 spin_unlock_irqrestore(&self->lock, flags); in cw1200_spi_lock()
218 remove_wait_queue(&self->wq, &wait); in cw1200_spi_lock()
223 static void cw1200_spi_unlock(struct hwbus_priv *self) in cw1200_spi_unlock() argument
227 spin_lock_irqsave(&self->lock, flags); in cw1200_spi_unlock()
228 self->claimed = 0; in cw1200_spi_unlock()
229 spin_unlock_irqrestore(&self->lock, flags); in cw1200_spi_unlock()
230 wake_up(&self->wq); in cw1200_spi_unlock()
237 struct hwbus_priv *self = dev_id; in cw1200_spi_irq_handler() local
239 if (self->core) { in cw1200_spi_irq_handler()
240 cw1200_spi_lock(self); in cw1200_spi_irq_handler()
241 cw1200_irq_handler(self->core); in cw1200_spi_irq_handler()
242 cw1200_spi_unlock(self); in cw1200_spi_irq_handler()
249 static int cw1200_spi_irq_subscribe(struct hwbus_priv *self) in cw1200_spi_irq_subscribe() argument
255 ret = request_threaded_irq(self->func->irq, NULL, in cw1200_spi_irq_subscribe()
258 "cw1200_wlan_irq", self); in cw1200_spi_irq_subscribe()
262 ret = enable_irq_wake(self->func->irq); in cw1200_spi_irq_subscribe()
269 free_irq(self->func->irq, self); in cw1200_spi_irq_subscribe()
274 static int cw1200_spi_irq_unsubscribe(struct hwbus_priv *self) in cw1200_spi_irq_unsubscribe() argument
279 disable_irq_wake(self->func->irq); in cw1200_spi_irq_unsubscribe()
280 free_irq(self->func->irq, self); in cw1200_spi_irq_unsubscribe()
345 static size_t cw1200_spi_align_size(struct hwbus_priv *self, size_t size) in cw1200_spi_align_size() argument
350 static int cw1200_spi_pm(struct hwbus_priv *self, bool suspend) in cw1200_spi_pm() argument
352 return irq_set_irq_wake(self->func->irq, suspend); in cw1200_spi_pm()
369 struct hwbus_priv *self; in cw1200_spi_probe() local
401 self = devm_kzalloc(&func->dev, sizeof(*self), GFP_KERNEL); in cw1200_spi_probe()
402 if (!self) { in cw1200_spi_probe()
407 self->pdata = plat_data; in cw1200_spi_probe()
408 self->func = func; in cw1200_spi_probe()
409 spin_lock_init(&self->lock); in cw1200_spi_probe()
411 spi_set_drvdata(func, self); in cw1200_spi_probe()
413 init_waitqueue_head(&self->wq); in cw1200_spi_probe()
415 status = cw1200_spi_irq_subscribe(self); in cw1200_spi_probe()
418 self, &func->dev, &self->core, in cw1200_spi_probe()
419 self->pdata->ref_clk, in cw1200_spi_probe()
420 self->pdata->macaddr, in cw1200_spi_probe()
421 self->pdata->sdd_file, in cw1200_spi_probe()
422 self->pdata->have_5ghz); in cw1200_spi_probe()
425 cw1200_spi_irq_unsubscribe(self); in cw1200_spi_probe()
435 struct hwbus_priv *self = spi_get_drvdata(func); in cw1200_spi_disconnect() local
437 if (self) { in cw1200_spi_disconnect()
438 cw1200_spi_irq_unsubscribe(self); in cw1200_spi_disconnect()
439 if (self->core) { in cw1200_spi_disconnect()
440 cw1200_core_release(self->core); in cw1200_spi_disconnect()
441 self->core = NULL; in cw1200_spi_disconnect()
452 struct hwbus_priv *self = spi_get_drvdata(to_spi_device(dev)); in cw1200_spi_suspend() local
454 if (!cw1200_can_suspend(self->core)) in cw1200_spi_suspend()