Lines Matching refs:sd

52 	struct sdv_gpio_chip_data *sd = gc->private;  in sdv_gpio_pub_set_type()  local
57 type_reg = sd->gpio_pub_base + GPIT1R0; in sdv_gpio_pub_set_type()
59 type_reg = sd->gpio_pub_base + GPIT1R1; in sdv_gpio_pub_set_type()
82 struct sdv_gpio_chip_data *sd = data; in sdv_gpio_pub_irq_handler() local
83 u32 irq_stat = readl(sd->gpio_pub_base + GPSTR); in sdv_gpio_pub_irq_handler()
85 irq_stat &= readl(sd->gpio_pub_base + GPIO_INT); in sdv_gpio_pub_irq_handler()
93 generic_handle_irq(irq_find_mapping(sd->id, irq_bit)); in sdv_gpio_pub_irq_handler()
132 static int sdv_register_irqsupport(struct sdv_gpio_chip_data *sd, in sdv_register_irqsupport() argument
138 sd->irq_base = irq_alloc_descs(-1, 0, SDV_NUM_PUB_GPIOS, -1); in sdv_register_irqsupport()
139 if (sd->irq_base < 0) in sdv_register_irqsupport()
140 return sd->irq_base; in sdv_register_irqsupport()
143 writel(0, sd->gpio_pub_base + GPIO_INT); in sdv_register_irqsupport()
144 writel((1 << 11) - 1, sd->gpio_pub_base + GPSTR); in sdv_register_irqsupport()
147 "sdv_gpio", sd); in sdv_register_irqsupport()
156 sd->gc = irq_alloc_generic_chip("sdv-gpio", 1, sd->irq_base, in sdv_register_irqsupport()
157 sd->gpio_pub_base, handle_fasteoi_irq); in sdv_register_irqsupport()
158 if (!sd->gc) { in sdv_register_irqsupport()
163 sd->gc->private = sd; in sdv_register_irqsupport()
164 ct = sd->gc->chip_types; in sdv_register_irqsupport()
173 irq_setup_generic_chip(sd->gc, IRQ_MSK(SDV_NUM_PUB_GPIOS), in sdv_register_irqsupport()
177 sd->id = irq_domain_add_legacy(pdev->dev.of_node, SDV_NUM_PUB_GPIOS, in sdv_register_irqsupport()
178 sd->irq_base, 0, &irq_domain_sdv_ops, sd); in sdv_register_irqsupport()
179 if (!sd->id) { in sdv_register_irqsupport()
185 free_irq(pdev->irq, sd); in sdv_register_irqsupport()
187 irq_free_descs(sd->irq_base, SDV_NUM_PUB_GPIOS); in sdv_register_irqsupport()
194 struct sdv_gpio_chip_data *sd; in sdv_gpio_probe() local
201 sd = kzalloc(sizeof(struct sdv_gpio_chip_data), GFP_KERNEL); in sdv_gpio_probe()
202 if (!sd) in sdv_gpio_probe()
221 sd->gpio_pub_base = ioremap(addr, pci_resource_len(pdev, GPIO_BAR)); in sdv_gpio_probe()
226 writel(mux_val, sd->gpio_pub_base + GPMUXCTL); in sdv_gpio_probe()
229 ret = bgpio_init(&sd->bgpio, &pdev->dev, 4, in sdv_gpio_probe()
230 sd->gpio_pub_base + GPINR, sd->gpio_pub_base + GPOUTR, in sdv_gpio_probe()
231 NULL, sd->gpio_pub_base + GPOER, NULL, 0); in sdv_gpio_probe()
234 sd->bgpio.gc.ngpio = SDV_NUM_PUB_GPIOS; in sdv_gpio_probe()
236 ret = gpiochip_add(&sd->bgpio.gc); in sdv_gpio_probe()
242 ret = sdv_register_irqsupport(sd, pdev); in sdv_gpio_probe()
246 pci_set_drvdata(pdev, sd); in sdv_gpio_probe()
251 iounmap(sd->gpio_pub_base); in sdv_gpio_probe()
257 kfree(sd); in sdv_gpio_probe()
263 struct sdv_gpio_chip_data *sd = pci_get_drvdata(pdev); in sdv_gpio_remove() local
265 free_irq(pdev->irq, sd); in sdv_gpio_remove()
266 irq_free_descs(sd->irq_base, SDV_NUM_PUB_GPIOS); in sdv_gpio_remove()
268 gpiochip_remove(&sd->bgpio.gc); in sdv_gpio_remove()
270 iounmap(sd->gpio_pub_base); in sdv_gpio_remove()
272 kfree(sd); in sdv_gpio_remove()