Lines Matching refs:fc_pci

79 	struct flexcop_pci *fc_pci = fc->bus_specific;  in flexcop_pci_read_ibi_reg()  local
81 v.raw = readl(fc_pci->io_mem + r); in flexcop_pci_read_ibi_reg()
94 struct flexcop_pci *fc_pci = fc->bus_specific; in flexcop_pci_write_ibi_reg() local
101 writel(v.raw, fc_pci->io_mem + r); in flexcop_pci_write_ibi_reg()
107 struct flexcop_pci *fc_pci = in flexcop_pci_irq_check_work() local
109 struct flexcop_device *fc = fc_pci->fc_dev; in flexcop_pci_irq_check_work()
113 if (fc_pci->count == fc_pci->count_prev) { in flexcop_pci_irq_check_work()
115 if (fc_pci->stream_problem++ == 3) { in flexcop_pci_irq_check_work()
131 fc_pci->stream_problem = 0; in flexcop_pci_irq_check_work()
134 fc_pci->stream_problem = 0; in flexcop_pci_irq_check_work()
135 fc_pci->count_prev = fc_pci->count; in flexcop_pci_irq_check_work()
139 schedule_delayed_work(&fc_pci->irq_check_work, in flexcop_pci_irq_check_work()
148 struct flexcop_pci *fc_pci = dev_id; in flexcop_pci_isr() local
149 struct flexcop_device *fc = fc_pci->fc_dev; in flexcop_pci_isr()
154 spin_lock_irqsave(&fc_pci->irq_lock, flags); in flexcop_pci_isr()
167 if ((fc_pci->count % 1000) == 0) in flexcop_pci_isr()
168 deb_chk("%d valid irq took place so far\n", fc_pci->count); in flexcop_pci_isr()
171 if (fc_pci->active_dma1_addr == 0) in flexcop_pci_isr()
172 flexcop_pass_dmx_packets(fc_pci->fc_dev, in flexcop_pci_isr()
173 fc_pci->dma[0].cpu_addr0, in flexcop_pci_isr()
174 fc_pci->dma[0].size / 188); in flexcop_pci_isr()
176 flexcop_pass_dmx_packets(fc_pci->fc_dev, in flexcop_pci_isr()
177 fc_pci->dma[0].cpu_addr1, in flexcop_pci_isr()
178 fc_pci->dma[0].size / 188); in flexcop_pci_isr()
180 deb_irq("page change to page: %d\n",!fc_pci->active_dma1_addr); in flexcop_pci_isr()
181 fc_pci->active_dma1_addr = !fc_pci->active_dma1_addr; in flexcop_pci_isr()
187 u32 cur_pos = cur_addr - fc_pci->dma[0].dma_addr0; in flexcop_pci_isr()
190 jiffies_to_usecs(jiffies - fc_pci->last_irq), in flexcop_pci_isr()
192 fc_pci->last_dma1_cur_pos); in flexcop_pci_isr()
193 fc_pci->last_irq = jiffies; in flexcop_pci_isr()
198 if (cur_pos < fc_pci->last_dma1_cur_pos) { in flexcop_pci_isr()
200 (fc_pci->dma[0].size*2 - 1) - in flexcop_pci_isr()
201 fc_pci->last_dma1_cur_pos); in flexcop_pci_isr()
202 flexcop_pass_dmx_data(fc_pci->fc_dev, in flexcop_pci_isr()
203 fc_pci->dma[0].cpu_addr0 + in flexcop_pci_isr()
204 fc_pci->last_dma1_cur_pos, in flexcop_pci_isr()
205 (fc_pci->dma[0].size*2) - in flexcop_pci_isr()
206 fc_pci->last_dma1_cur_pos); in flexcop_pci_isr()
207 fc_pci->last_dma1_cur_pos = 0; in flexcop_pci_isr()
210 if (cur_pos > fc_pci->last_dma1_cur_pos) { in flexcop_pci_isr()
212 cur_pos - fc_pci->last_dma1_cur_pos); in flexcop_pci_isr()
213 flexcop_pass_dmx_data(fc_pci->fc_dev, in flexcop_pci_isr()
214 fc_pci->dma[0].cpu_addr0 + in flexcop_pci_isr()
215 fc_pci->last_dma1_cur_pos, in flexcop_pci_isr()
216 cur_pos - fc_pci->last_dma1_cur_pos); in flexcop_pci_isr()
220 fc_pci->last_dma1_cur_pos = cur_pos; in flexcop_pci_isr()
221 fc_pci->count++; in flexcop_pci_isr()
228 spin_unlock_irqrestore(&fc_pci->irq_lock, flags); in flexcop_pci_isr()
234 struct flexcop_pci *fc_pci = fc->bus_specific; in flexcop_pci_stream_control() local
236 flexcop_dma_config(fc, &fc_pci->dma[0], FC_DMA_1); in flexcop_pci_stream_control()
237 flexcop_dma_config(fc, &fc_pci->dma[1], FC_DMA_2); in flexcop_pci_stream_control()
243 fc_pci->last_dma1_cur_pos = 0; in flexcop_pci_stream_control()
246 fc_pci->count_prev = fc_pci->count; in flexcop_pci_stream_control()
258 static int flexcop_pci_dma_init(struct flexcop_pci *fc_pci) in flexcop_pci_dma_init() argument
261 ret = flexcop_dma_allocate(fc_pci->pdev, &fc_pci->dma[0], in flexcop_pci_dma_init()
266 ret = flexcop_dma_allocate(fc_pci->pdev, &fc_pci->dma[1], in flexcop_pci_dma_init()
269 flexcop_dma_free(&fc_pci->dma[0]); in flexcop_pci_dma_init()
273 flexcop_sram_set_dest(fc_pci->fc_dev, FC_SRAM_DEST_MEDIA | in flexcop_pci_dma_init()
275 flexcop_sram_set_dest(fc_pci->fc_dev, FC_SRAM_DEST_CAO | in flexcop_pci_dma_init()
277 fc_pci->init_state |= FC_PCI_DMA_INIT; in flexcop_pci_dma_init()
281 static void flexcop_pci_dma_exit(struct flexcop_pci *fc_pci) in flexcop_pci_dma_exit() argument
283 if (fc_pci->init_state & FC_PCI_DMA_INIT) { in flexcop_pci_dma_exit()
284 flexcop_dma_free(&fc_pci->dma[0]); in flexcop_pci_dma_exit()
285 flexcop_dma_free(&fc_pci->dma[1]); in flexcop_pci_dma_exit()
287 fc_pci->init_state &= ~FC_PCI_DMA_INIT; in flexcop_pci_dma_exit()
290 static int flexcop_pci_init(struct flexcop_pci *fc_pci) in flexcop_pci_init() argument
294 info("card revision %x", fc_pci->pdev->revision); in flexcop_pci_init()
296 if ((ret = pci_enable_device(fc_pci->pdev)) != 0) in flexcop_pci_init()
298 pci_set_master(fc_pci->pdev); in flexcop_pci_init()
300 if ((ret = pci_request_regions(fc_pci->pdev, DRIVER_NAME)) != 0) in flexcop_pci_init()
303 fc_pci->io_mem = pci_iomap(fc_pci->pdev, 0, 0x800); in flexcop_pci_init()
305 if (!fc_pci->io_mem) { in flexcop_pci_init()
311 pci_set_drvdata(fc_pci->pdev, fc_pci); in flexcop_pci_init()
312 spin_lock_init(&fc_pci->irq_lock); in flexcop_pci_init()
313 if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr, in flexcop_pci_init()
314 IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0) in flexcop_pci_init()
317 fc_pci->init_state |= FC_PCI_INIT; in flexcop_pci_init()
321 pci_iounmap(fc_pci->pdev, fc_pci->io_mem); in flexcop_pci_init()
323 pci_release_regions(fc_pci->pdev); in flexcop_pci_init()
325 pci_disable_device(fc_pci->pdev); in flexcop_pci_init()
329 static void flexcop_pci_exit(struct flexcop_pci *fc_pci) in flexcop_pci_exit() argument
331 if (fc_pci->init_state & FC_PCI_INIT) { in flexcop_pci_exit()
332 free_irq(fc_pci->pdev->irq, fc_pci); in flexcop_pci_exit()
333 pci_iounmap(fc_pci->pdev, fc_pci->io_mem); in flexcop_pci_exit()
334 pci_release_regions(fc_pci->pdev); in flexcop_pci_exit()
335 pci_disable_device(fc_pci->pdev); in flexcop_pci_exit()
337 fc_pci->init_state &= ~FC_PCI_INIT; in flexcop_pci_exit()
344 struct flexcop_pci *fc_pci; in flexcop_pci_probe() local
353 fc_pci = fc->bus_specific; in flexcop_pci_probe()
354 fc_pci->fc_dev = fc; in flexcop_pci_probe()
373 fc_pci->pdev = pdev; in flexcop_pci_probe()
374 if ((ret = flexcop_pci_init(fc_pci)) != 0) in flexcop_pci_probe()
382 if ((ret = flexcop_pci_dma_init(fc_pci)) != 0) in flexcop_pci_probe()
385 INIT_DELAYED_WORK(&fc_pci->irq_check_work, flexcop_pci_irq_check_work); in flexcop_pci_probe()
388 schedule_delayed_work(&fc_pci->irq_check_work, in flexcop_pci_probe()
397 flexcop_pci_exit(fc_pci); in flexcop_pci_probe()
408 struct flexcop_pci *fc_pci = pci_get_drvdata(pdev); in flexcop_pci_remove() local
411 cancel_delayed_work(&fc_pci->irq_check_work); in flexcop_pci_remove()
413 flexcop_pci_dma_exit(fc_pci); in flexcop_pci_remove()
414 flexcop_device_exit(fc_pci->fc_dev); in flexcop_pci_remove()
415 flexcop_pci_exit(fc_pci); in flexcop_pci_remove()
416 flexcop_device_kfree(fc_pci->fc_dev); in flexcop_pci_remove()