Lines Matching refs:info

51 static void sercos3_disable_interrupts(struct uio_info *info,  in sercos3_disable_interrupts()  argument
54 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET; in sercos3_disable_interrupts()
64 static void sercos3_enable_interrupts(struct uio_info *info, in sercos3_enable_interrupts() argument
67 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET; in sercos3_enable_interrupts()
74 static irqreturn_t sercos3_handler(int irq, struct uio_info *info) in sercos3_handler() argument
76 struct sercos3_priv *priv = info->priv; in sercos3_handler()
77 void __iomem *isr0 = info->mem[3].internal_addr + ISR0_OFFSET; in sercos3_handler()
78 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET; in sercos3_handler()
84 sercos3_disable_interrupts(info, priv); in sercos3_handler()
90 static int sercos3_irqcontrol(struct uio_info *info, s32 irq_on) in sercos3_irqcontrol() argument
92 struct sercos3_priv *priv = info->priv; in sercos3_irqcontrol()
96 sercos3_enable_interrupts(info, priv); in sercos3_irqcontrol()
98 sercos3_disable_interrupts(info, priv); in sercos3_irqcontrol()
104 static int sercos3_setup_iomem(struct pci_dev *dev, struct uio_info *info, in sercos3_setup_iomem() argument
107 info->mem[n].addr = pci_resource_start(dev, pci_bar); in sercos3_setup_iomem()
108 if (!info->mem[n].addr) in sercos3_setup_iomem()
110 info->mem[n].internal_addr = ioremap(pci_resource_start(dev, pci_bar), in sercos3_setup_iomem()
112 if (!info->mem[n].internal_addr) in sercos3_setup_iomem()
114 info->mem[n].size = pci_resource_len(dev, pci_bar); in sercos3_setup_iomem()
115 info->mem[n].memtype = UIO_MEM_PHYS; in sercos3_setup_iomem()
122 struct uio_info *info; in sercos3_pci_probe() local
126 info = kzalloc(sizeof(struct uio_info), GFP_KERNEL); in sercos3_pci_probe()
127 if (!info) in sercos3_pci_probe()
141 if (sercos3_setup_iomem(dev, info, 0, 0)) in sercos3_pci_probe()
143 if (sercos3_setup_iomem(dev, info, 1, 2)) in sercos3_pci_probe()
145 if (sercos3_setup_iomem(dev, info, 2, 3)) in sercos3_pci_probe()
147 if (sercos3_setup_iomem(dev, info, 3, 4)) in sercos3_pci_probe()
149 if (sercos3_setup_iomem(dev, info, 4, 5)) in sercos3_pci_probe()
153 info->priv = priv; in sercos3_pci_probe()
154 info->name = "Sercos_III_PCI"; in sercos3_pci_probe()
155 info->version = "0.0.1"; in sercos3_pci_probe()
156 info->irq = dev->irq; in sercos3_pci_probe()
157 info->irq_flags = IRQF_SHARED; in sercos3_pci_probe()
158 info->handler = sercos3_handler; in sercos3_pci_probe()
159 info->irqcontrol = sercos3_irqcontrol; in sercos3_pci_probe()
161 pci_set_drvdata(dev, info); in sercos3_pci_probe()
163 if (uio_register_device(&dev->dev, info)) in sercos3_pci_probe()
170 if (info->mem[i].internal_addr) in sercos3_pci_probe()
171 iounmap(info->mem[i].internal_addr); in sercos3_pci_probe()
179 kfree(info); in sercos3_pci_probe()
185 struct uio_info *info = pci_get_drvdata(dev); in sercos3_pci_remove() local
188 uio_unregister_device(info); in sercos3_pci_remove()
192 if (info->mem[i].internal_addr) in sercos3_pci_remove()
193 iounmap(info->mem[i].internal_addr); in sercos3_pci_remove()
195 kfree(info->priv); in sercos3_pci_remove()
196 kfree(info); in sercos3_pci_remove()