lldev 130 drivers/bluetooth/hci_ll.c struct ll_device *lldev = serdev_device_get_drvdata(hu->serdev); lldev 132 drivers/bluetooth/hci_ll.c if (!IS_ERR(lldev->ext_clk)) lldev 133 drivers/bluetooth/hci_ll.c clk_prepare_enable(lldev->ext_clk); lldev 165 drivers/bluetooth/hci_ll.c struct ll_device *lldev = serdev_device_get_drvdata(hu->serdev); lldev 167 drivers/bluetooth/hci_ll.c gpiod_set_value_cansleep(lldev->enable_gpio, 0); lldev 169 drivers/bluetooth/hci_ll.c clk_disable_unprepare(lldev->ext_clk); lldev 486 drivers/bluetooth/hci_ll.c static int send_command_from_firmware(struct ll_device *lldev, lldev 495 drivers/bluetooth/hci_ll.c bt_dev_warn(lldev->hu.hdev, lldev 500 drivers/bluetooth/hci_ll.c bt_dev_dbg(lldev->hu.hdev, "command type %d", cmd->prefix); lldev 502 drivers/bluetooth/hci_ll.c skb = __hci_cmd_sync(lldev->hu.hdev, cmd->opcode, cmd->plen, lldev 505 drivers/bluetooth/hci_ll.c bt_dev_err(lldev->hu.hdev, "send command failed"); lldev 517 drivers/bluetooth/hci_ll.c static int download_firmware(struct ll_device *lldev) lldev 526 drivers/bluetooth/hci_ll.c version = read_local_version(lldev->hu.hdev); lldev 540 drivers/bluetooth/hci_ll.c err = request_firmware(&fw, bts_scr_name, &lldev->serdev->dev); lldev 542 drivers/bluetooth/hci_ll.c bt_dev_err(lldev->hu.hdev, "request_firmware failed(errno %d) for %s", lldev 555 drivers/bluetooth/hci_ll.c bt_dev_dbg(lldev->hu.hdev, " action size %d, type %d ", lldev 563 drivers/bluetooth/hci_ll.c bt_dev_dbg(lldev->hu.hdev, "S"); lldev 565 drivers/bluetooth/hci_ll.c err = send_command_from_firmware(lldev, cmd); lldev 571 drivers/bluetooth/hci_ll.c bt_dev_dbg(lldev->hu.hdev, "W"); lldev 574 drivers/bluetooth/hci_ll.c bt_dev_info(lldev->hu.hdev, "sleep command in scr"); lldev 611 drivers/bluetooth/hci_ll.c struct ll_device *lldev; lldev 618 drivers/bluetooth/hci_ll.c lldev = serdev_device_get_drvdata(serdev); lldev 626 drivers/bluetooth/hci_ll.c gpiod_set_value_cansleep(lldev->enable_gpio, 0); lldev 628 drivers/bluetooth/hci_ll.c gpiod_set_value_cansleep(lldev->enable_gpio, 1); lldev 635 drivers/bluetooth/hci_ll.c err = download_firmware(lldev); lldev 647 drivers/bluetooth/hci_ll.c if (!bacmp(&lldev->bdaddr, BDADDR_NONE)) { lldev 652 drivers/bluetooth/hci_ll.c } else if (bacmp(&lldev->bdaddr, BDADDR_ANY)) { lldev 653 drivers/bluetooth/hci_ll.c err = ll_set_bdaddr(hu->hdev, &lldev->bdaddr); lldev 687 drivers/bluetooth/hci_ll.c struct ll_device *lldev; lldev 691 drivers/bluetooth/hci_ll.c lldev = devm_kzalloc(&serdev->dev, sizeof(struct ll_device), GFP_KERNEL); lldev 692 drivers/bluetooth/hci_ll.c if (!lldev) lldev 694 drivers/bluetooth/hci_ll.c hu = &lldev->hu; lldev 696 drivers/bluetooth/hci_ll.c serdev_device_set_drvdata(serdev, lldev); lldev 697 drivers/bluetooth/hci_ll.c lldev->serdev = hu->serdev = serdev; lldev 699 drivers/bluetooth/hci_ll.c lldev->enable_gpio = devm_gpiod_get_optional(&serdev->dev, lldev 702 drivers/bluetooth/hci_ll.c if (IS_ERR(lldev->enable_gpio)) lldev 703 drivers/bluetooth/hci_ll.c return PTR_ERR(lldev->enable_gpio); lldev 705 drivers/bluetooth/hci_ll.c lldev->ext_clk = devm_clk_get(&serdev->dev, "ext_clock"); lldev 706 drivers/bluetooth/hci_ll.c if (IS_ERR(lldev->ext_clk) && PTR_ERR(lldev->ext_clk) != -ENOENT) lldev 707 drivers/bluetooth/hci_ll.c return PTR_ERR(lldev->ext_clk); lldev 732 drivers/bluetooth/hci_ll.c bacpy(&lldev->bdaddr, BDADDR_NONE); lldev 754 drivers/bluetooth/hci_ll.c baswap(&lldev->bdaddr, bdaddr); lldev 763 drivers/bluetooth/hci_ll.c struct ll_device *lldev = serdev_device_get_drvdata(serdev); lldev 765 drivers/bluetooth/hci_ll.c hci_uart_unregister_device(&lldev->hu); lldev 85 drivers/dma/qcom/hidma.c return container_of(_lldevp, struct hidma_dev, lldev); lldev 141 drivers/dma/qcom/hidma.c llstat = hidma_ll_status(mdma->lldev, mdesc->tre_ch); lldev 232 drivers/dma/qcom/hidma.c hidma_ll_start(dmadev->lldev); lldev 245 drivers/dma/qcom/hidma.c hidma_ll_queue_request(dmadev->lldev, qdesc->tre_ch); lldev 262 drivers/dma/qcom/hidma.c hidma_ll_start(dmadev->lldev); lldev 326 drivers/dma/qcom/hidma.c if (!hidma_ll_isenabled(dmadev->lldev)) { lldev 371 drivers/dma/qcom/hidma.c rc = hidma_ll_request(dmadev->lldev, mchan->dma_sig, lldev 386 drivers/dma/qcom/hidma.c hidma_ll_free(dmadev->lldev, mdesc->tre_ch); lldev 420 drivers/dma/qcom/hidma.c hidma_ll_set_transfer_params(mdma->lldev, mdesc->tre_ch, lldev 453 drivers/dma/qcom/hidma.c hidma_ll_set_transfer_params(mdma->lldev, mdesc->tre_ch, lldev 487 drivers/dma/qcom/hidma.c rc = hidma_ll_disable(dmadev->lldev); lldev 505 drivers/dma/qcom/hidma.c rc = hidma_ll_enable(dmadev->lldev); lldev 524 drivers/dma/qcom/hidma.c rc = hidma_ll_setup(dmadev->lldev); lldev 548 drivers/dma/qcom/hidma.c hidma_ll_free(mdma->lldev, mdesc->tre_ch); lldev 566 drivers/dma/qcom/hidma.c if (hidma_ll_disable(dmadev->lldev)) lldev 585 drivers/dma/qcom/hidma.c rc = hidma_ll_enable(dmadev->lldev); lldev 599 drivers/dma/qcom/hidma.c struct hidma_lldev *lldev = arg; lldev 605 drivers/dma/qcom/hidma.c return hidma_ll_inthandler(chirq, lldev); lldev 691 drivers/dma/qcom/hidma.c devm_free_irq(dev, desc->irq, &dmadev->lldev); lldev 717 drivers/dma/qcom/hidma.c &dmadev->lldev); lldev 730 drivers/dma/qcom/hidma.c &dmadev->lldev); lldev 734 drivers/dma/qcom/hidma.c hidma_ll_setup_irq(dmadev->lldev, true); lldev 858 drivers/dma/qcom/hidma.c dmadev->lldev = hidma_ll_init(dmadev->ddev.dev, lldev 861 drivers/dma/qcom/hidma.c if (!dmadev->lldev) { lldev 871 drivers/dma/qcom/hidma.c hidma_ll_setup_irq(dmadev->lldev, false); lldev 873 drivers/dma/qcom/hidma.c 0, "qcom-hidma", dmadev->lldev); lldev 901 drivers/dma/qcom/hidma.c hidma_ll_uninit(dmadev->lldev); lldev 918 drivers/dma/qcom/hidma.c if (hidma_ll_disable(dmadev->lldev)) lldev 931 drivers/dma/qcom/hidma.c if (!dmadev->lldev->msi_support) lldev 932 drivers/dma/qcom/hidma.c devm_free_irq(dmadev->ddev.dev, dmadev->irq, dmadev->lldev); lldev 939 drivers/dma/qcom/hidma.c hidma_ll_uninit(dmadev->lldev); lldev 37 drivers/dma/qcom/hidma.h struct hidma_lldev *lldev; /* lldma device pointer */ lldev 116 drivers/dma/qcom/hidma.h struct hidma_lldev *lldev; lldev 144 drivers/dma/qcom/hidma.h int hidma_ll_disable(struct hidma_lldev *lldev); lldev 148 drivers/dma/qcom/hidma.h void hidma_ll_setup_irq(struct hidma_lldev *lldev, bool msi); lldev 149 drivers/dma/qcom/hidma.h int hidma_ll_setup(struct hidma_lldev *lldev); lldev 17 drivers/dma/qcom/hidma_dbg.c struct hidma_lldev *lldev = llhndl; lldev 24 drivers/dma/qcom/hidma_dbg.c if (tre_ch >= lldev->nr_tres) { lldev 25 drivers/dma/qcom/hidma_dbg.c dev_err(lldev->dev, "invalid TRE number in chstats:%d", tre_ch); lldev 28 drivers/dma/qcom/hidma_dbg.c tre = &lldev->trepool[tre_ch]; lldev 56 drivers/dma/qcom/hidma_dbg.c struct hidma_lldev *lldev = llhndl; lldev 59 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "lldev init = 0x%x\n", lldev->initialized); lldev 60 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "trch_state = 0x%x\n", lldev->trch_state); lldev 61 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evch_state = 0x%x\n", lldev->evch_state); lldev 62 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "chidx = 0x%x\n", lldev->chidx); lldev 63 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "nr_tres = 0x%x\n", lldev->nr_tres); lldev 64 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "trca=%p\n", lldev->trca); lldev 65 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "tre_ring=%p\n", lldev->tre_ring); lldev 66 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "tre_ring_handle=%pap\n", &lldev->tre_dma); lldev 67 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "tre_ring_size = 0x%x\n", lldev->tre_ring_size); lldev 68 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "tre_processed_off = 0x%x\n", lldev->tre_processed_off); lldev 70 drivers/dma/qcom/hidma_dbg.c atomic_read(&lldev->pending_tre_count)); lldev 71 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evca=%p\n", lldev->evca); lldev 72 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evre_ring=%p\n", lldev->evre_ring); lldev 73 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evre_ring_handle=%pap\n", &lldev->evre_dma); lldev 74 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evre_ring_size = 0x%x\n", lldev->evre_ring_size); lldev 75 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "evre_processed_off = 0x%x\n", lldev->evre_processed_off); lldev 76 drivers/dma/qcom/hidma_dbg.c seq_printf(s, "tre_write_offset = 0x%x\n", lldev->tre_write_offset); lldev 95 drivers/dma/qcom/hidma_dbg.c hidma_ll_chstats(s, mchan->dmadev->lldev, mdesc->tre_ch); lldev 99 drivers/dma/qcom/hidma_dbg.c hidma_ll_chstats(s, mchan->dmadev->lldev, mdesc->tre_ch); lldev 103 drivers/dma/qcom/hidma_dbg.c hidma_ll_chstats(s, mchan->dmadev->lldev, mdesc->tre_ch); lldev 105 drivers/dma/qcom/hidma_dbg.c hidma_ll_devstats(s, mchan->dmadev->lldev); lldev 116 drivers/dma/qcom/hidma_ll.c void hidma_ll_free(struct hidma_lldev *lldev, u32 tre_ch) lldev 120 drivers/dma/qcom/hidma_ll.c if (tre_ch >= lldev->nr_tres) { lldev 121 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "invalid TRE number in free:%d", tre_ch); lldev 125 drivers/dma/qcom/hidma_ll.c tre = &lldev->trepool[tre_ch]; lldev 127 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "trying to free an unused TRE:%d", tre_ch); lldev 134 drivers/dma/qcom/hidma_ll.c int hidma_ll_request(struct hidma_lldev *lldev, u32 sig, const char *dev_name, lldev 141 drivers/dma/qcom/hidma_ll.c if (!tre_ch || !lldev) lldev 145 drivers/dma/qcom/hidma_ll.c for (i = 0; i < lldev->nr_tres - 1; i++) { lldev 146 drivers/dma/qcom/hidma_ll.c if (atomic_add_unless(&lldev->trepool[i].allocated, 1, 1)) lldev 150 drivers/dma/qcom/hidma_ll.c if (i == (lldev->nr_tres - 1)) lldev 153 drivers/dma/qcom/hidma_ll.c tre = &lldev->trepool[i]; lldev 163 drivers/dma/qcom/hidma_ll.c tre->lldev = lldev; lldev 165 drivers/dma/qcom/hidma_ll.c tre_local[HIDMA_TRE_CFG_IDX] = (lldev->chidx & 0xFF) << 8; lldev 178 drivers/dma/qcom/hidma_ll.c struct hidma_lldev *lldev = (struct hidma_lldev *)arg; lldev 181 drivers/dma/qcom/hidma_ll.c while (kfifo_out(&lldev->handoff_fifo, &tre, 1)) { lldev 188 drivers/dma/qcom/hidma_ll.c static int hidma_post_completed(struct hidma_lldev *lldev, u8 err_info, lldev 195 drivers/dma/qcom/hidma_ll.c spin_lock_irqsave(&lldev->lock, flags); lldev 197 drivers/dma/qcom/hidma_ll.c tre_iterator = lldev->tre_processed_off; lldev 198 drivers/dma/qcom/hidma_ll.c tre = lldev->pending_tre_list[tre_iterator / HIDMA_TRE_SIZE]; lldev 200 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, flags); lldev 201 drivers/dma/qcom/hidma_ll.c dev_warn(lldev->dev, "tre_index [%d] and tre out of sync\n", lldev 205 drivers/dma/qcom/hidma_ll.c lldev->pending_tre_list[tre->tre_index] = NULL; lldev 211 drivers/dma/qcom/hidma_ll.c if (atomic_dec_return(&lldev->pending_tre_count) < 0) { lldev 212 drivers/dma/qcom/hidma_ll.c dev_warn(lldev->dev, "tre count mismatch on completion"); lldev 213 drivers/dma/qcom/hidma_ll.c atomic_set(&lldev->pending_tre_count, 0); lldev 217 drivers/dma/qcom/hidma_ll.c lldev->tre_ring_size); lldev 218 drivers/dma/qcom/hidma_ll.c lldev->tre_processed_off = tre_iterator; lldev 219 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, flags); lldev 225 drivers/dma/qcom/hidma_ll.c kfifo_put(&lldev->handoff_fifo, tre); lldev 226 drivers/dma/qcom/hidma_ll.c tasklet_schedule(&lldev->task); lldev 237 drivers/dma/qcom/hidma_ll.c static int hidma_handle_tre_completion(struct hidma_lldev *lldev) lldev 239 drivers/dma/qcom/hidma_ll.c u32 evre_ring_size = lldev->evre_ring_size; lldev 244 drivers/dma/qcom/hidma_ll.c evre_write_off = readl_relaxed(lldev->evca + HIDMA_EVCA_WRITE_PTR_REG); lldev 245 drivers/dma/qcom/hidma_ll.c evre_iterator = lldev->evre_processed_off; lldev 249 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "HW reports invalid EVRE write offset\n"); lldev 258 drivers/dma/qcom/hidma_ll.c u32 *current_evre = lldev->evre_ring + evre_iterator; lldev 267 drivers/dma/qcom/hidma_ll.c if (hidma_post_completed(lldev, err_info, err_code)) lldev 279 drivers/dma/qcom/hidma_ll.c readl_relaxed(lldev->evca + HIDMA_EVCA_WRITE_PTR_REG); lldev 286 drivers/dma/qcom/hidma_ll.c if (!hidma_ll_isenabled(lldev)) lldev 291 drivers/dma/qcom/hidma_ll.c u32 evre_read_off = (lldev->evre_processed_off + lldev 294 drivers/dma/qcom/hidma_ll.c writel(evre_read_off, lldev->evca + HIDMA_EVCA_DOORBELL_REG); lldev 297 drivers/dma/qcom/hidma_ll.c lldev->evre_processed_off = evre_read_off; lldev 303 drivers/dma/qcom/hidma_ll.c void hidma_cleanup_pending_tre(struct hidma_lldev *lldev, u8 err_info, lldev 306 drivers/dma/qcom/hidma_ll.c while (atomic_read(&lldev->pending_tre_count)) { lldev 307 drivers/dma/qcom/hidma_ll.c if (hidma_post_completed(lldev, err_info, err_code)) lldev 312 drivers/dma/qcom/hidma_ll.c static int hidma_ll_reset(struct hidma_lldev *lldev) lldev 317 drivers/dma/qcom/hidma_ll.c val = readl(lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 320 drivers/dma/qcom/hidma_ll.c writel(val, lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 326 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->trca + HIDMA_TRCA_CTRLSTS_REG, val, lldev 330 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "transfer channel did not reset\n"); lldev 334 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 337 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 343 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->evca + HIDMA_EVCA_CTRLSTS_REG, val, lldev 349 drivers/dma/qcom/hidma_ll.c lldev->trch_state = HIDMA_CH_DISABLED; lldev 350 drivers/dma/qcom/hidma_ll.c lldev->evch_state = HIDMA_CH_DISABLED; lldev 386 drivers/dma/qcom/hidma_ll.c static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause) lldev 391 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "error 0x%x, disabling...\n", lldev 395 drivers/dma/qcom/hidma_ll.c writel(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 398 drivers/dma/qcom/hidma_ll.c hidma_ll_disable(lldev); lldev 401 drivers/dma/qcom/hidma_ll.c hidma_cleanup_pending_tre(lldev, 0xFF, lldev 407 drivers/dma/qcom/hidma_ll.c spin_lock_irqsave(&lldev->lock, irqflags); lldev 408 drivers/dma/qcom/hidma_ll.c writel_relaxed(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 409 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, irqflags); lldev 421 drivers/dma/qcom/hidma_ll.c hidma_handle_tre_completion(lldev); lldev 426 drivers/dma/qcom/hidma_ll.c struct hidma_lldev *lldev = arg; lldev 431 drivers/dma/qcom/hidma_ll.c status = readl_relaxed(lldev->evca + HIDMA_EVCA_IRQ_STAT_REG); lldev 432 drivers/dma/qcom/hidma_ll.c enable = readl_relaxed(lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 436 drivers/dma/qcom/hidma_ll.c hidma_ll_int_handler_internal(lldev, cause); lldev 442 drivers/dma/qcom/hidma_ll.c status = readl_relaxed(lldev->evca + HIDMA_EVCA_IRQ_STAT_REG); lldev 443 drivers/dma/qcom/hidma_ll.c enable = readl_relaxed(lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 452 drivers/dma/qcom/hidma_ll.c struct hidma_lldev *lldev = arg; lldev 454 drivers/dma/qcom/hidma_ll.c hidma_ll_int_handler_internal(lldev, cause); lldev 458 drivers/dma/qcom/hidma_ll.c int hidma_ll_enable(struct hidma_lldev *lldev) lldev 463 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 466 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 468 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->evca + HIDMA_EVCA_CTRLSTS_REG, val, lldev 472 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "event channel did not get enabled\n"); lldev 476 drivers/dma/qcom/hidma_ll.c val = readl(lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 479 drivers/dma/qcom/hidma_ll.c writel(val, lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 481 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->trca + HIDMA_TRCA_CTRLSTS_REG, val, lldev 485 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "transfer channel did not get enabled\n"); lldev 489 drivers/dma/qcom/hidma_ll.c lldev->trch_state = HIDMA_CH_ENABLED; lldev 490 drivers/dma/qcom/hidma_ll.c lldev->evch_state = HIDMA_CH_ENABLED; lldev 493 drivers/dma/qcom/hidma_ll.c writel(ENABLE_IRQS, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 498 drivers/dma/qcom/hidma_ll.c void hidma_ll_start(struct hidma_lldev *lldev) lldev 502 drivers/dma/qcom/hidma_ll.c spin_lock_irqsave(&lldev->lock, irqflags); lldev 503 drivers/dma/qcom/hidma_ll.c writel(lldev->tre_write_offset, lldev->trca + HIDMA_TRCA_DOORBELL_REG); lldev 504 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, irqflags); lldev 507 drivers/dma/qcom/hidma_ll.c bool hidma_ll_isenabled(struct hidma_lldev *lldev) lldev 511 drivers/dma/qcom/hidma_ll.c val = readl(lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 512 drivers/dma/qcom/hidma_ll.c lldev->trch_state = HIDMA_CH_STATE(val); lldev 513 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 514 drivers/dma/qcom/hidma_ll.c lldev->evch_state = HIDMA_CH_STATE(val); lldev 517 drivers/dma/qcom/hidma_ll.c if (hidma_is_chan_enabled(lldev->trch_state) && lldev 518 drivers/dma/qcom/hidma_ll.c hidma_is_chan_enabled(lldev->evch_state)) lldev 524 drivers/dma/qcom/hidma_ll.c void hidma_ll_queue_request(struct hidma_lldev *lldev, u32 tre_ch) lldev 529 drivers/dma/qcom/hidma_ll.c tre = &lldev->trepool[tre_ch]; lldev 532 drivers/dma/qcom/hidma_ll.c spin_lock_irqsave(&lldev->lock, flags); lldev 533 drivers/dma/qcom/hidma_ll.c tre->tre_index = lldev->tre_write_offset / HIDMA_TRE_SIZE; lldev 534 drivers/dma/qcom/hidma_ll.c lldev->pending_tre_list[tre->tre_index] = tre; lldev 535 drivers/dma/qcom/hidma_ll.c memcpy(lldev->tre_ring + lldev->tre_write_offset, lldev 540 drivers/dma/qcom/hidma_ll.c atomic_inc(&lldev->pending_tre_count); lldev 541 drivers/dma/qcom/hidma_ll.c lldev->tre_write_offset = (lldev->tre_write_offset + HIDMA_TRE_SIZE) lldev 542 drivers/dma/qcom/hidma_ll.c % lldev->tre_ring_size; lldev 543 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, flags); lldev 551 drivers/dma/qcom/hidma_ll.c int hidma_ll_disable(struct hidma_lldev *lldev) lldev 557 drivers/dma/qcom/hidma_ll.c if (!hidma_ll_isenabled(lldev)) lldev 560 drivers/dma/qcom/hidma_ll.c val = readl(lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 563 drivers/dma/qcom/hidma_ll.c writel(val, lldev->trca + HIDMA_TRCA_CTRLSTS_REG); lldev 569 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->trca + HIDMA_TRCA_CTRLSTS_REG, val, lldev 575 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 578 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_CTRLSTS_REG); lldev 584 drivers/dma/qcom/hidma_ll.c ret = readl_poll_timeout(lldev->evca + HIDMA_EVCA_CTRLSTS_REG, val, lldev 590 drivers/dma/qcom/hidma_ll.c lldev->trch_state = HIDMA_CH_SUSPENDED; lldev 591 drivers/dma/qcom/hidma_ll.c lldev->evch_state = HIDMA_CH_SUSPENDED; lldev 594 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 598 drivers/dma/qcom/hidma_ll.c void hidma_ll_set_transfer_params(struct hidma_lldev *lldev, u32 tre_ch, lldev 605 drivers/dma/qcom/hidma_ll.c if (tre_ch >= lldev->nr_tres) { lldev 606 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "invalid TRE number in transfer params:%d", lldev 611 drivers/dma/qcom/hidma_ll.c tre = &lldev->trepool[tre_ch]; lldev 613 drivers/dma/qcom/hidma_ll.c dev_err(lldev->dev, "trying to set params on an unused TRE:%d", lldev 633 drivers/dma/qcom/hidma_ll.c int hidma_ll_setup(struct hidma_lldev *lldev) lldev 638 drivers/dma/qcom/hidma_ll.c u32 nr_tres = lldev->nr_tres; lldev 640 drivers/dma/qcom/hidma_ll.c atomic_set(&lldev->pending_tre_count, 0); lldev 641 drivers/dma/qcom/hidma_ll.c lldev->tre_processed_off = 0; lldev 642 drivers/dma/qcom/hidma_ll.c lldev->evre_processed_off = 0; lldev 643 drivers/dma/qcom/hidma_ll.c lldev->tre_write_offset = 0; lldev 646 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 649 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_IRQ_STAT_REG); lldev 650 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 652 drivers/dma/qcom/hidma_ll.c rc = hidma_ll_reset(lldev); lldev 660 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_IRQ_STAT_REG); lldev 661 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 664 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 666 drivers/dma/qcom/hidma_ll.c addr = lldev->tre_dma; lldev 667 drivers/dma/qcom/hidma_ll.c writel(lower_32_bits(addr), lldev->trca + HIDMA_TRCA_RING_LOW_REG); lldev 668 drivers/dma/qcom/hidma_ll.c writel(upper_32_bits(addr), lldev->trca + HIDMA_TRCA_RING_HIGH_REG); lldev 669 drivers/dma/qcom/hidma_ll.c writel(lldev->tre_ring_size, lldev->trca + HIDMA_TRCA_RING_LEN_REG); lldev 671 drivers/dma/qcom/hidma_ll.c addr = lldev->evre_dma; lldev 672 drivers/dma/qcom/hidma_ll.c writel(lower_32_bits(addr), lldev->evca + HIDMA_EVCA_RING_LOW_REG); lldev 673 drivers/dma/qcom/hidma_ll.c writel(upper_32_bits(addr), lldev->evca + HIDMA_EVCA_RING_HIGH_REG); lldev 675 drivers/dma/qcom/hidma_ll.c lldev->evca + HIDMA_EVCA_RING_LEN_REG); lldev 678 drivers/dma/qcom/hidma_ll.c hidma_ll_setup_irq(lldev, lldev->msi_support); lldev 680 drivers/dma/qcom/hidma_ll.c rc = hidma_ll_enable(lldev); lldev 687 drivers/dma/qcom/hidma_ll.c void hidma_ll_setup_irq(struct hidma_lldev *lldev, bool msi) lldev 691 drivers/dma/qcom/hidma_ll.c lldev->msi_support = msi; lldev 694 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 695 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 698 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_INTCTRL_REG); lldev 700 drivers/dma/qcom/hidma_ll.c if (!lldev->msi_support) lldev 702 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_INTCTRL_REG); lldev 705 drivers/dma/qcom/hidma_ll.c writel(ENABLE_IRQS, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 706 drivers/dma/qcom/hidma_ll.c writel(ENABLE_IRQS, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 714 drivers/dma/qcom/hidma_ll.c struct hidma_lldev *lldev; lldev 728 drivers/dma/qcom/hidma_ll.c lldev = devm_kzalloc(dev, sizeof(struct hidma_lldev), GFP_KERNEL); lldev 729 drivers/dma/qcom/hidma_ll.c if (!lldev) lldev 732 drivers/dma/qcom/hidma_ll.c lldev->evca = evca; lldev 733 drivers/dma/qcom/hidma_ll.c lldev->trca = trca; lldev 734 drivers/dma/qcom/hidma_ll.c lldev->dev = dev; lldev 736 drivers/dma/qcom/hidma_ll.c lldev->trepool = devm_kcalloc(lldev->dev, nr_tres, sz, GFP_KERNEL); lldev 737 drivers/dma/qcom/hidma_ll.c if (!lldev->trepool) lldev 740 drivers/dma/qcom/hidma_ll.c required_bytes = sizeof(lldev->pending_tre_list[0]); lldev 741 drivers/dma/qcom/hidma_ll.c lldev->pending_tre_list = devm_kcalloc(dev, nr_tres, required_bytes, lldev 743 drivers/dma/qcom/hidma_ll.c if (!lldev->pending_tre_list) lldev 747 drivers/dma/qcom/hidma_ll.c lldev->tre_ring = dmam_alloc_coherent(dev, sz, &lldev->tre_dma, lldev 749 drivers/dma/qcom/hidma_ll.c if (!lldev->tre_ring) lldev 752 drivers/dma/qcom/hidma_ll.c lldev->tre_ring_size = HIDMA_TRE_SIZE * nr_tres; lldev 753 drivers/dma/qcom/hidma_ll.c lldev->nr_tres = nr_tres; lldev 756 drivers/dma/qcom/hidma_ll.c if (!IS_ALIGNED(lldev->tre_dma, HIDMA_TRE_SIZE)) { lldev 759 drivers/dma/qcom/hidma_ll.c tre_ring_shift = lldev->tre_dma % HIDMA_TRE_SIZE; lldev 761 drivers/dma/qcom/hidma_ll.c lldev->tre_dma += tre_ring_shift; lldev 762 drivers/dma/qcom/hidma_ll.c lldev->tre_ring += tre_ring_shift; lldev 766 drivers/dma/qcom/hidma_ll.c lldev->evre_ring = dmam_alloc_coherent(dev, sz, &lldev->evre_dma, lldev 768 drivers/dma/qcom/hidma_ll.c if (!lldev->evre_ring) lldev 771 drivers/dma/qcom/hidma_ll.c lldev->evre_ring_size = HIDMA_EVRE_SIZE * nr_tres; lldev 774 drivers/dma/qcom/hidma_ll.c if (!IS_ALIGNED(lldev->evre_dma, HIDMA_EVRE_SIZE)) { lldev 777 drivers/dma/qcom/hidma_ll.c evre_ring_shift = lldev->evre_dma % HIDMA_EVRE_SIZE; lldev 779 drivers/dma/qcom/hidma_ll.c lldev->evre_dma += evre_ring_shift; lldev 780 drivers/dma/qcom/hidma_ll.c lldev->evre_ring += evre_ring_shift; lldev 782 drivers/dma/qcom/hidma_ll.c lldev->nr_tres = nr_tres; lldev 783 drivers/dma/qcom/hidma_ll.c lldev->chidx = chidx; lldev 786 drivers/dma/qcom/hidma_ll.c rc = kfifo_alloc(&lldev->handoff_fifo, sz, GFP_KERNEL); lldev 790 drivers/dma/qcom/hidma_ll.c rc = hidma_ll_setup(lldev); lldev 794 drivers/dma/qcom/hidma_ll.c spin_lock_init(&lldev->lock); lldev 795 drivers/dma/qcom/hidma_ll.c tasklet_init(&lldev->task, hidma_ll_tre_complete, (unsigned long)lldev); lldev 796 drivers/dma/qcom/hidma_ll.c lldev->initialized = 1; lldev 797 drivers/dma/qcom/hidma_ll.c writel(ENABLE_IRQS, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 798 drivers/dma/qcom/hidma_ll.c return lldev; lldev 801 drivers/dma/qcom/hidma_ll.c int hidma_ll_uninit(struct hidma_lldev *lldev) lldev 807 drivers/dma/qcom/hidma_ll.c if (!lldev) lldev 810 drivers/dma/qcom/hidma_ll.c if (!lldev->initialized) lldev 813 drivers/dma/qcom/hidma_ll.c lldev->initialized = 0; lldev 815 drivers/dma/qcom/hidma_ll.c required_bytes = sizeof(struct hidma_tre) * lldev->nr_tres; lldev 816 drivers/dma/qcom/hidma_ll.c tasklet_kill(&lldev->task); lldev 817 drivers/dma/qcom/hidma_ll.c memset(lldev->trepool, 0, required_bytes); lldev 818 drivers/dma/qcom/hidma_ll.c lldev->trepool = NULL; lldev 819 drivers/dma/qcom/hidma_ll.c atomic_set(&lldev->pending_tre_count, 0); lldev 820 drivers/dma/qcom/hidma_ll.c lldev->tre_write_offset = 0; lldev 822 drivers/dma/qcom/hidma_ll.c rc = hidma_ll_reset(lldev); lldev 828 drivers/dma/qcom/hidma_ll.c val = readl(lldev->evca + HIDMA_EVCA_IRQ_STAT_REG); lldev 829 drivers/dma/qcom/hidma_ll.c writel(val, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG); lldev 830 drivers/dma/qcom/hidma_ll.c writel(0, lldev->evca + HIDMA_EVCA_IRQ_EN_REG); lldev 834 drivers/dma/qcom/hidma_ll.c enum dma_status hidma_ll_status(struct hidma_lldev *lldev, u32 tre_ch) lldev 841 drivers/dma/qcom/hidma_ll.c spin_lock_irqsave(&lldev->lock, flags); lldev 843 drivers/dma/qcom/hidma_ll.c tre = &lldev->trepool[tre_ch]; lldev 852 drivers/dma/qcom/hidma_ll.c spin_unlock_irqrestore(&lldev->lock, flags); lldev 906 drivers/infiniband/hw/cxgb3/cxio_hal.c netdev_p = rdev_p->t3cdev_p->lldev; lldev 936 drivers/infiniband/hw/cxgb3/iwch_provider.c struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev; lldev 940 drivers/infiniband/hw/cxgb3/iwch_provider.c lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev 966 drivers/infiniband/hw/cxgb3/iwch_provider.c memcpy(&props->sys_image_guid, dev->rdev.t3cdev_p->lldev->dev_addr, 6); lldev 1028 drivers/infiniband/hw/cxgb3/iwch_provider.c struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev; lldev 1031 drivers/infiniband/hw/cxgb3/iwch_provider.c lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev 1196 drivers/infiniband/hw/cxgb3/iwch_provider.c struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev; lldev 1199 drivers/infiniband/hw/cxgb3/iwch_provider.c lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev 1271 drivers/infiniband/hw/cxgb3/iwch_provider.c memcpy(&dev->ibdev.node_guid, dev->rdev.t3cdev_p->lldev->dev_addr, 6); lldev 1304 drivers/infiniband/hw/cxgb3/iwch_provider.c memcpy(dev->ibdev.iw_ifname, dev->rdev.t3cdev_p->lldev->name, lldev 343 drivers/infiniband/hw/cxgb4/provider.c struct net_device *lldev = c4iw_dev->rdev.lldi.ports[0]; lldev 346 drivers/infiniband/hw/cxgb4/provider.c lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev 1363 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c tdev->lldev = adapter->port[0]; lldev 1375 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c if (sysfs_create_group(&tdev->lldev->dev.kobj, &offload_attr_group)) lldev 1402 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group); lldev 1407 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c tdev->lldev = NULL; lldev 921 drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c skb->dev = dev->lldev; lldev 56 drivers/net/ethernet/chelsio/cxgb3/t3cdev.h struct net_device *lldev; /* LL dev associated with T3C messages */ lldev 389 drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c struct pci_dev *pdev, void *lldev, lldev 477 drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c ppm->lldev = lldev; lldev 132 drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.h void *lldev; lldev 327 drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.h void *lldev, struct cxgbi_tag_format *, lldev 185 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c l2t_send(csk->cdev->lldev, skb, csk->l2t); lldev 266 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c l2t_send(csk->cdev->lldev, skb, csk->l2t); lldev 289 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(csk->cdev->lldev, skb); lldev 318 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(csk->cdev->lldev, skb); lldev 455 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c l2t_send(csk->cdev->lldev, skb, csk->l2t); lldev 469 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_free_atid(csk->cdev->lldev, csk->atid); lldev 490 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_insert_tid(csk->cdev->lldev, &t3_client, csk, tid); lldev 896 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c struct t3cdev *t3dev = (struct t3cdev *)csk->cdev->lldev; lldev 907 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c struct t3cdev *t3dev = (struct t3cdev *)csk->cdev->lldev; lldev 958 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c struct t3cdev *t3dev = (struct t3cdev *)cdev->lldev; lldev 1032 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c struct t3cdev *t3dev = (struct t3cdev *)cdev->lldev; lldev 1084 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c return ((struct t3cdev *)cdev->lldev)->ulp_iscsi; lldev 1112 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(ppm->lldev, skb); lldev 1140 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(ppm->lldev, skb); lldev 1168 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(csk->cdev->lldev, skb); lldev 1204 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cxgb3_ofld_send(csk->cdev->lldev, skb); lldev 1215 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c struct t3cdev *tdev = (struct t3cdev *)cdev->lldev; lldev 1312 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c cdev->lldev = t3dev; lldev 201 drivers/scsi/cxgbi/libcxgbi.c struct cxgbi_device *cxgbi_device_find_by_lldev(void *lldev) lldev 207 drivers/scsi/cxgbi/libcxgbi.c if (cdev->lldev == lldev) { lldev 215 drivers/scsi/cxgbi/libcxgbi.c "lldev 0x%p, NO match found.\n", lldev); lldev 1296 drivers/scsi/cxgbi/libcxgbi.c cdev->lldev, tformat, iscsi_size, llimit, start, lldev 467 drivers/scsi/cxgbi/libcxgbi.h void *lldev; lldev 264 net/caif/chnl_net.c struct net_device *lldev; lldev 285 net/caif/chnl_net.c lldev = __dev_get_by_index(dev_net(dev), llifindex); lldev 287 net/caif/chnl_net.c if (lldev == NULL) { lldev 293 net/caif/chnl_net.c dev->needed_tailroom = tailroom + lldev->needed_tailroom; lldev 294 net/caif/chnl_net.c dev->hard_header_len = headroom + lldev->hard_header_len + lldev 295 net/caif/chnl_net.c lldev->needed_tailroom; lldev 304 net/caif/chnl_net.c mtu = min_t(int, dev->mtu, lldev->mtu - (headroom + tailroom));