Lines Matching defs:priv

54 static inline int __iwmct_tx(struct iwmct_priv *priv, void *src, int count)
56 return sdio_memcpy_toio(priv->func, IWMC_SDIO_DATA_ADDR, src, count);
59 int iwmct_tx(struct iwmct_priv *priv, void *src, int count)
62 sdio_claim_host(priv->func);
63 ret = __iwmct_tx(priv, src, count);
64 sdio_release_host(priv->func);
75 struct iwmct_priv *priv;
78 priv = container_of(ws, struct iwmct_priv, bus_rescan_worker);
80 LOG_INFO(priv, FW_MSG, "Calling bus_rescan\n");
82 ret = bus_rescan_devices(priv->func->dev.bus);
84 LOG_INFO(priv, INIT, "bus_rescan_devices FAILED!!!\n");
87 static void op_top_message(struct iwmct_priv *priv, struct top_msg *msg)
91 LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n");
92 schedule_work(&priv->bus_rescan_worker);
95 LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n",
102 static void handle_top_message(struct iwmct_priv *priv, u8 *buf, int len)
109 LOG_ERROR(priv, FW_MSG,
116 LOG_ERROR(priv, FW_MSG,
124 LOG_ERROR(priv, FW_MSG,
133 op_top_message(priv, (struct top_msg *)buf);
139 iwmct_log_top_message(priv, buf, len);
143 LOG_ERROR(priv, FW_MSG,
150 int iwmct_send_hcmd(struct iwmct_priv *priv, u8 *cmd, u16 len)
155 LOG_TRACE(priv, FW_MSG, "Sending hcmd:\n");
163 LOG_ERROR(priv, FW_MSG, "size %d exceeded hcmd max size %d\n",
170 LOG_ERROR(priv, FW_MSG, "kzalloc error, buf size %d\n",
176 ret = iwmct_tx(priv, buf, FW_HCMD_BLOCK_SIZE);
185 struct iwmct_priv *priv;
193 priv = container_of(ws, struct iwmct_priv, isr_worker);
195 LOG_TRACE(priv, IRQ, "enter iwmct_irq_read_worker %p\n", ws);
198 sdio_claim_host(priv->func);
202 if (list_empty(&priv->read_req_list)) {
203 LOG_ERROR(priv, IRQ, "read_req_list empty in read worker\n");
207 read_req = list_entry(priv->read_req_list.next,
216 LOG_ERROR(priv, IRQ, "kzalloc error, buf size %d\n", iosize);
220 LOG_INFO(priv, IRQ, "iosize=%d, buf=%p, func=%d\n",
221 iosize, buf, priv->func->num);
224 ret = sdio_memcpy_fromio(priv->func, buf, IWMC_SDIO_DATA_ADDR, iosize);
226 LOG_ERROR(priv, IRQ, "error %d reading buffer\n", ret);
244 LOG_WARNING(priv, IRQ,
256 sdio_release_host(priv->func);
257 handle_top_message(priv, (u8 *)buf, iosize);
260 if (atomic_read(&priv->dev_sync) == 0) {
261 LOG_ERROR(priv, IRQ,
267 atomic_set(&priv->dev_sync, 0);
268 LOG_INFO(priv, IRQ, "ACK barker arrived "
271 LOG_INFO(priv, IRQ, "Received reboot barker: %x\n", barker);
272 priv->barker = barker;
276 ret = __iwmct_tx(priv, buf, iosize);
278 LOG_ERROR(priv, IRQ,
282 LOG_INFO(priv, IRQ, "Echoing barker to device\n");
283 atomic_set(&priv->dev_sync, 1);
288 LOG_INFO(priv, IRQ, "No sync requested "
292 sdio_release_host(priv->func);
294 if (priv->dbg.fw_download)
295 iwmct_fw_load(priv);
297 LOG_ERROR(priv, IRQ, "FW download not allowed\n");
302 sdio_release_host(priv->func);
305 LOG_TRACE(priv, IRQ, "exit iwmct_irq_read_worker\n");
310 struct iwmct_priv *priv;
316 priv = sdio_get_drvdata(func);
318 LOG_TRACE(priv, IRQ, "enter iwmct_irq\n");
323 LOG_TRACE(priv, IRQ, "iir value = %d, ret=%d\n", val, ret);
326 LOG_ERROR(priv, IRQ, "iir = 0, exiting ISR\n");
336 val = sdio_readb(priv->func, addr++, &ret);
338 val = sdio_readb(priv->func, addr++, &ret);
341 LOG_INFO(priv, IRQ, "READ size %d\n", iosize);
344 LOG_ERROR(priv, IRQ, "READ size %d, exiting ISR\n", iosize);
351 LOG_ERROR(priv, IRQ, "failed to allocate read_req, exit ISR\n");
358 list_add_tail(&priv->read_req_list, &read_req->list);
363 schedule_work(&priv->isr_worker);
365 LOG_TRACE(priv, IRQ, "exit iwmct_irq\n");
416 void iwmct_dbg_init_params(struct iwmct_priv *priv)
422 dev_notice(&priv->func->dev, "log_level[%d]=0x%X\n",
428 dev_notice(&priv->func->dev, "log_level_fw[%d]=0x%X\n",
435 priv->dbg.blocks = blocks;
436 LOG_INFO(priv, INIT, "blocks=%d\n", blocks);
437 priv->dbg.dump = (bool)dump;
438 LOG_INFO(priv, INIT, "dump=%d\n", dump);
439 priv->dbg.jump = (bool)jump;
440 LOG_INFO(priv, INIT, "jump=%d\n", jump);
441 priv->dbg.direct = (bool)direct;
442 LOG_INFO(priv, INIT, "direct=%d\n", direct);
443 priv->dbg.checksum = (bool)checksum;
444 LOG_INFO(priv, INIT, "checksum=%d\n", checksum);
445 priv->dbg.fw_download = (bool)fw_download;
446 LOG_INFO(priv, INIT, "fw_download=%d\n", fw_download);
447 priv->dbg.block_size = block_size;
448 LOG_INFO(priv, INIT, "block_size=%d\n", block_size);
449 priv->dbg.download_trans_blks = download_trans_blks;
450 LOG_INFO(priv, INIT, "download_trans_blks=%d\n", download_trans_blks);
461 struct iwmct_priv *priv = dev_get_drvdata(d);
462 return sprintf(buf, "%s\n", priv->dbg.label_fw);
491 struct iwmct_priv *priv;
501 priv = kzalloc(sizeof(struct iwmct_priv), GFP_KERNEL);
502 if (!priv) {
506 priv->func = func;
507 sdio_set_drvdata(func, priv);
509 INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker);
510 INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker);
512 init_waitqueue_head(&priv->wait_q);
519 ret = sdio_set_block_size(func, priv->dbg.block_size);
521 LOG_ERROR(priv, INIT,
528 LOG_ERROR(priv, INIT, "sdio_enable_func() failure: %d\n", ret);
533 atomic_set(&priv->reset, 0);
534 atomic_set(&priv->dev_sync, 0);
537 INIT_LIST_HEAD(&priv->read_req_list);
540 iwmct_dbg_init_params(priv);
543 LOG_ERROR(priv, INIT, "Failed to register attributes and "
548 iwmct_dbgfs_register(priv, DRV_NAME);
550 if (!priv->dbg.direct && priv->dbg.download_trans_blks > 8) {
551 LOG_INFO(priv, INIT,
553 priv->dbg.download_trans_blks);
554 priv->dbg.download_trans_blks = 8;
556 priv->trans_len = priv->dbg.download_trans_blks * priv->dbg.block_size;
557 LOG_INFO(priv, INIT, "Transaction length = %d\n", priv->trans_len);
561 LOG_ERROR(priv, INIT, "sdio_claim_irq() failure: %d\n", ret);
567 sdio_writeb(priv->func, val, addr, &ret);
569 LOG_ERROR(priv, INIT, "Failure writing to "
576 LOG_INFO(priv, INIT, "exit iwmct_probe\n");
585 iwmct_dbgfs_unregister(priv->dbgfs);
595 struct iwmct_priv *priv = sdio_get_drvdata(func);
597 LOG_INFO(priv, INIT, "enter\n");
604 flush_work_sync(&priv->bus_rescan_worker);
605 flush_work_sync(&priv->isr_worker);
610 iwmct_dbgfs_unregister(priv->dbgfs);
614 while (!list_empty(&priv->read_req_list)) {
615 read_req = list_entry(priv->read_req_list.next,
622 kfree(priv);