Lines Matching refs:info

52 static void sercos3_disable_interrupts(struct uio_info *info,
55 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET;
65 static void sercos3_enable_interrupts(struct uio_info *info,
68 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET;
75 static irqreturn_t sercos3_handler(int irq, struct uio_info *info)
77 struct sercos3_priv *priv = info->priv;
78 void __iomem *isr0 = info->mem[3].internal_addr + ISR0_OFFSET;
79 void __iomem *ier0 = info->mem[3].internal_addr + IER0_OFFSET;
85 sercos3_disable_interrupts(info, priv);
91 static int sercos3_irqcontrol(struct uio_info *info, s32 irq_on)
93 struct sercos3_priv *priv = info->priv;
97 sercos3_enable_interrupts(info, priv);
99 sercos3_disable_interrupts(info, priv);
105 static int sercos3_setup_iomem(struct pci_dev *dev, struct uio_info *info,
108 info->mem[n].addr = pci_resource_start(dev, pci_bar);
109 if (!info->mem[n].addr)
111 info->mem[n].internal_addr = ioremap(pci_resource_start(dev, pci_bar),
113 if (!info->mem[n].internal_addr)
115 info->mem[n].size = pci_resource_len(dev, pci_bar);
116 info->mem[n].memtype = UIO_MEM_PHYS;
123 struct uio_info *info;
127 info = devm_kzalloc(&dev->dev, sizeof(struct uio_info), GFP_KERNEL);
128 if (!info)
142 if (sercos3_setup_iomem(dev, info, 0, 0))
144 if (sercos3_setup_iomem(dev, info, 1, 2))
146 if (sercos3_setup_iomem(dev, info, 2, 3))
148 if (sercos3_setup_iomem(dev, info, 3, 4))
150 if (sercos3_setup_iomem(dev, info, 4, 5))
154 info->priv = priv;
155 info->name = "Sercos_III_PCI";
156 info->version = "0.0.1";
157 info->irq = dev->irq;
158 info->irq_flags = IRQF_SHARED;
159 info->handler = sercos3_handler;
160 info->irqcontrol = sercos3_irqcontrol;
162 pci_set_drvdata(dev, info);
164 if (uio_register_device(&dev->dev, info))
171 if (info->mem[i].internal_addr)
172 iounmap(info->mem[i].internal_addr);
182 struct uio_info *info = pci_get_drvdata(dev);
185 uio_unregister_device(info);
189 if (info->mem[i].internal_addr)
190 iounmap(info->mem[i].internal_addr);