Lines Matching defs:solo_dev
34 void solo6010_irq_on(struct solo6010_dev *solo_dev, u32 mask)
36 solo_dev->irq_mask |= mask;
37 solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
40 void solo6010_irq_off(struct solo6010_dev *solo_dev, u32 mask)
42 solo_dev->irq_mask &= ~mask;
43 solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
48 struct solo6010_dev *solo_dev = data;
52 status = solo_reg_read(solo_dev, SOLO_IRQ_STAT);
56 if (status & ~solo_dev->irq_mask) {
57 solo_reg_write(solo_dev, SOLO_IRQ_STAT,
58 status & ~solo_dev->irq_mask);
59 status &= solo_dev->irq_mask;
63 u32 err = solo_reg_read(solo_dev, SOLO_PCI_ERR);
64 solo_p2m_error_isr(solo_dev, err);
65 solo_reg_write(solo_dev, SOLO_IRQ_STAT, SOLO_IRQ_PCI_ERR);
70 solo_p2m_isr(solo_dev, i);
73 solo_i2c_isr(solo_dev);
76 solo_video_in_isr(solo_dev);
80 solo_motion_isr(solo_dev);
83 solo_enc_v4l2_isr(solo_dev);
86 solo_g723_isr(solo_dev);
91 static void free_solo_dev(struct solo6010_dev *solo_dev)
95 if (!solo_dev)
98 pdev = solo_dev->pdev;
103 kfree(solo_dev);
108 solo_g723_exit(solo_dev);
109 solo_enc_v4l2_exit(solo_dev);
110 solo_enc_exit(solo_dev);
111 solo_v4l2_exit(solo_dev);
112 solo_disp_exit(solo_dev);
113 solo_gpio_exit(solo_dev);
114 solo_p2m_exit(solo_dev);
115 solo_i2c_exit(solo_dev);
118 if (solo_dev->reg_base) {
119 solo6010_irq_off(solo_dev, ~0);
120 pci_iounmap(pdev, solo_dev->reg_base);
121 free_irq(pdev->irq, solo_dev);
128 kfree(solo_dev);
134 struct solo6010_dev *solo_dev;
139 if ((solo_dev = kzalloc(sizeof(*solo_dev), GFP_KERNEL)) == NULL)
142 solo_dev->pdev = pdev;
143 spin_lock_init(&solo_dev->reg_io_lock);
144 pci_set_drvdata(pdev, solo_dev);
154 if ((solo_dev->reg_base = pci_ioremap_bar(pdev, 0)) == NULL) {
159 chip_id = solo_reg_read(solo_dev, SOLO_CHIP_OPTION) &
163 solo_dev->nr_chans = 16;
164 solo_dev->nr_ext = 5;
167 solo_dev->nr_chans = 8;
168 solo_dev->nr_ext = 2;
175 solo_dev->nr_chans = 4;
176 solo_dev->nr_ext = 1;
180 solo6010_irq_off(solo_dev, ~0);
183 solo_reg_write(solo_dev, SOLO_SYS_CFG, SOLO_SYS_CFG_SDRAM64BIT |
187 solo_reg_write(solo_dev, SOLO_TIMER_CLOCK_NUM, SOLO_CLOCK_MHZ - 1);
193 solo_dev);
198 solo6010_irq_on(solo_dev, SOLO_IRQ_PCI_ERR);
200 if ((ret = solo_i2c_init(solo_dev)))
204 sdram = (solo_dev->nr_chans >= 8) ? 2 : 1;
205 solo_reg_write(solo_dev, SOLO_DMA_CTRL,
212 if ((ret = solo_p2m_init(solo_dev)))
215 if ((ret = solo_disp_init(solo_dev)))
218 if ((ret = solo_gpio_init(solo_dev)))
221 if ((ret = solo_tw28_init(solo_dev)))
224 if ((ret = solo_v4l2_init(solo_dev)))
227 if ((ret = solo_enc_init(solo_dev)))
230 if ((ret = solo_enc_v4l2_init(solo_dev)))
233 if ((ret = solo_g723_init(solo_dev)))
239 free_solo_dev(solo_dev);
245 struct solo6010_dev *solo_dev = pci_get_drvdata(pdev);
247 free_solo_dev(solo_dev);