Lines Matching refs:sf
114 struct sfax_hw *sf = dev_id;
118 spin_lock(&sf->lock);
119 val = inb(sf->cfg + TIGER_AUX_STATUS);
121 spin_unlock(&sf->lock);
124 sf->irqcnt++;
125 val = ReadISAR_IND(sf, ISAR_IRQBIT);
128 mISDNisar_irq(&sf->isar);
129 val = ReadISAC_IND(sf, ISAC_ISTA);
131 mISDNisac_irq(&sf->isac, val);
132 val = ReadISAR_IND(sf, ISAR_IRQBIT);
136 pr_debug("%s: %d irqloops cpu%d\n", sf->name,
139 pr_notice("%s: %d IRQ LOOP cpu%d\n", sf->name,
141 spin_unlock(&sf->lock);
146 enable_hwirq(struct sfax_hw *sf)
148 WriteISAC_IND(sf, ISAC_MASK, 0);
149 WriteISAR_IND(sf, ISAR_IRQBIT, ISAR_IRQMSK);
150 outb(SFAX_TIGER_IRQ_BIT, sf->cfg + TIGER_AUX_IRQMASK);
154 disable_hwirq(struct sfax_hw *sf)
156 WriteISAC_IND(sf, ISAC_MASK, 0xFF);
157 WriteISAR_IND(sf, ISAR_IRQBIT, 0);
158 outb(0, sf->cfg + TIGER_AUX_IRQMASK);
162 reset_speedfax(struct sfax_hw *sf)
165 pr_debug("%s: resetting card\n", sf->name);
166 outb(TIGER_EXTERN_RESET_ON, sf->cfg + TIGER_RESET_ADDR);
167 outb(SFAX_PCI_RESET_ON, sf->cfg + TIGER_AUX_DATA);
169 outb(TIGER_EXTERN_RESET_OFF, sf->cfg + TIGER_RESET_ADDR);
170 sf->aux_data = SFAX_PCI_RESET_OFF;
171 outb(sf->aux_data, sf->cfg + TIGER_AUX_DATA);
176 sfax_ctrl(struct sfax_hw *sf, u32 cmd, u_long arg)
182 reset_speedfax(sf);
186 sf->aux_data &= ~SFAX_LED1_BIT;
188 sf->aux_data &= ~SFAX_LED2_BIT;
189 outb(sf->aux_data, sf->cfg + TIGER_AUX_DATA);
193 sf->aux_data |= SFAX_LED1_BIT;
195 sf->aux_data |= SFAX_LED2_BIT;
196 outb(sf->aux_data, sf->cfg + TIGER_AUX_DATA);
200 sf->name, __func__, cmd, arg);
208 channel_ctrl(struct sfax_hw *sf, struct mISDN_ctrl_req *cq)
222 ret = sf->isac.ctrl(&sf->isac, HW_TESTLOOP, cq->channel);
225 ret = sf->isac.ctrl(&sf->isac, HW_TIMER3_VALUE, cq->p1);
228 pr_info("%s: unknown Op %x\n", sf->name, cq->op);
240 struct sfax_hw *sf = dch->hw;
244 pr_debug("%s: cmd:%x %p\n", sf->name, cmd, arg);
249 err = sf->isac.open(&sf->isac, rq);
251 err = sf->isar.open(&sf->isar, rq);
255 pr_info("%s: cannot get module\n", sf->name);
258 pr_debug("%s: dev(%d) close from %p\n", sf->name,
263 err = channel_ctrl(sf, arg);
266 pr_debug("%s: unknown command %x\n", sf->name, cmd);
273 init_card(struct sfax_hw *sf)
278 ret = request_irq(sf->irq, speedfax_irq, IRQF_SHARED, sf->name, sf);
280 pr_info("%s: couldn't get interrupt %d\n", sf->name, sf->irq);
284 spin_lock_irqsave(&sf->lock, flags);
285 ret = sf->isac.init(&sf->isac);
287 spin_unlock_irqrestore(&sf->lock, flags);
289 sf->name, ret);
292 enable_hwirq(sf);
294 WriteISAC_IND(sf, ISAC_CMDR, 0x41);
295 spin_unlock_irqrestore(&sf->lock, flags);
298 pr_notice("%s: IRQ %d count %d\n", sf->name,
299 sf->irq, sf->irqcnt);
300 if (!sf->irqcnt) {
302 sf->name, sf->irq, 3 - cnt);
306 free_irq(sf->irq, sf);
312 setup_speedfax(struct sfax_hw *sf)
316 if (!request_region(sf->cfg, 256, sf->name)) {
318 sf->name, sf->cfg, sf->cfg + 255);
321 outb(0xff, sf->cfg);
322 outb(0, sf->cfg);
323 outb(0xdd, sf->cfg + TIGER_AUX_CTRL);
324 outb(0, sf->cfg + TIGER_AUX_IRQMASK);
326 sf->isac.type = IPAC_TYPE_ISAC;
327 sf->p_isac.ale = sf->cfg + SFAX_PCI_ADDR;
328 sf->p_isac.port = sf->cfg + SFAX_PCI_ISAC;
329 sf->p_isar.ale = sf->cfg + SFAX_PCI_ADDR;
330 sf->p_isar.port = sf->cfg + SFAX_PCI_ISAR;
331 ASSIGN_FUNC(IND, ISAC, sf->isac);
332 ASSIGN_FUNC(IND, ISAR, sf->isar);
333 spin_lock_irqsave(&sf->lock, flags);
334 reset_speedfax(sf);
335 disable_hwirq(sf);
336 spin_unlock_irqrestore(&sf->lock, flags);