Lines Matching full:g
59 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_ack_irq() local
61 writel(BIT(irqd_to_hwirq(d)), g->base + GPIO_INT_CLR); in ftgpio_gpio_ack_irq()
67 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_mask_irq() local
70 val = readl(g->base + GPIO_INT_EN); in ftgpio_gpio_mask_irq()
72 writel(val, g->base + GPIO_INT_EN); in ftgpio_gpio_mask_irq()
78 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_unmask_irq() local
81 val = readl(g->base + GPIO_INT_EN); in ftgpio_gpio_unmask_irq()
83 writel(val, g->base + GPIO_INT_EN); in ftgpio_gpio_unmask_irq()
89 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_set_irq_type() local
93 reg_type = readl(g->base + GPIO_INT_TYPE); in ftgpio_gpio_set_irq_type()
94 reg_level = readl(g->base + GPIO_INT_LEVEL); in ftgpio_gpio_set_irq_type()
95 reg_both = readl(g->base + GPIO_INT_BOTH_EDGE); in ftgpio_gpio_set_irq_type()
130 writel(reg_type, g->base + GPIO_INT_TYPE); in ftgpio_gpio_set_irq_type()
131 writel(reg_level, g->base + GPIO_INT_LEVEL); in ftgpio_gpio_set_irq_type()
132 writel(reg_both, g->base + GPIO_INT_BOTH_EDGE); in ftgpio_gpio_set_irq_type()
142 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_irq_handler() local
149 stat = readl(g->base + GPIO_INT_STAT_RAW); in ftgpio_gpio_irq_handler()
163 struct ftgpio_gpio *g = gpiochip_get_data(gc); in ftgpio_gpio_set_config() local
182 pclk_freq = clk_get_rate(g->clk); in ftgpio_gpio_set_config()
189 dev_dbg(g->dev, "prescale divisor: %08x, resulting frequency %lu Hz\n", in ftgpio_gpio_set_config()
192 val = readl(g->base + GPIO_DEBOUNCE_PRESCALE); in ftgpio_gpio_set_config()
201 val = readl(g->base + GPIO_DEBOUNCE_EN); in ftgpio_gpio_set_config()
203 writel(val, g->base + GPIO_DEBOUNCE_EN); in ftgpio_gpio_set_config()
207 val = readl(g->base + GPIO_DEBOUNCE_EN); in ftgpio_gpio_set_config()
217 writel(deb_div, g->base + GPIO_DEBOUNCE_PRESCALE); in ftgpio_gpio_set_config()
220 writel(val, g->base + GPIO_DEBOUNCE_EN); in ftgpio_gpio_set_config()
228 struct ftgpio_gpio *g; in ftgpio_gpio_probe() local
233 g = devm_kzalloc(dev, sizeof(*g), GFP_KERNEL); in ftgpio_gpio_probe()
234 if (!g) in ftgpio_gpio_probe()
237 g->dev = dev; in ftgpio_gpio_probe()
239 g->base = devm_platform_ioremap_resource(pdev, 0); in ftgpio_gpio_probe()
240 if (IS_ERR(g->base)) in ftgpio_gpio_probe()
241 return PTR_ERR(g->base); in ftgpio_gpio_probe()
247 g->clk = devm_clk_get(dev, NULL); in ftgpio_gpio_probe()
248 if (!IS_ERR(g->clk)) { in ftgpio_gpio_probe()
249 ret = clk_prepare_enable(g->clk); in ftgpio_gpio_probe()
252 } else if (PTR_ERR(g->clk) == -EPROBE_DEFER) { in ftgpio_gpio_probe()
257 return PTR_ERR(g->clk); in ftgpio_gpio_probe()
260 ret = bgpio_init(&g->gc, dev, 4, in ftgpio_gpio_probe()
261 g->base + GPIO_DATA_IN, in ftgpio_gpio_probe()
262 g->base + GPIO_DATA_SET, in ftgpio_gpio_probe()
263 g->base + GPIO_DATA_CLR, in ftgpio_gpio_probe()
264 g->base + GPIO_DIR, in ftgpio_gpio_probe()
271 g->gc.label = "FTGPIO010"; in ftgpio_gpio_probe()
272 g->gc.base = -1; in ftgpio_gpio_probe()
273 g->gc.parent = dev; in ftgpio_gpio_probe()
274 g->gc.owner = THIS_MODULE; in ftgpio_gpio_probe()
278 if (!IS_ERR(g->clk)) in ftgpio_gpio_probe()
279 g->gc.set_config = ftgpio_gpio_set_config; in ftgpio_gpio_probe()
281 g->irq.name = "FTGPIO010"; in ftgpio_gpio_probe()
282 g->irq.irq_ack = ftgpio_gpio_ack_irq; in ftgpio_gpio_probe()
283 g->irq.irq_mask = ftgpio_gpio_mask_irq; in ftgpio_gpio_probe()
284 g->irq.irq_unmask = ftgpio_gpio_unmask_irq; in ftgpio_gpio_probe()
285 g->irq.irq_set_type = ftgpio_gpio_set_irq_type; in ftgpio_gpio_probe()
287 girq = &g->gc.irq; in ftgpio_gpio_probe()
288 girq->chip = &g->irq; in ftgpio_gpio_probe()
302 writel(0x0, g->base + GPIO_INT_EN); in ftgpio_gpio_probe()
303 writel(0x0, g->base + GPIO_INT_MASK); in ftgpio_gpio_probe()
304 writel(~0x0, g->base + GPIO_INT_CLR); in ftgpio_gpio_probe()
307 writel(0x0, g->base + GPIO_DEBOUNCE_EN); in ftgpio_gpio_probe()
309 ret = devm_gpiochip_add_data(dev, &g->gc, g); in ftgpio_gpio_probe()
313 platform_set_drvdata(pdev, g); in ftgpio_gpio_probe()
314 dev_info(dev, "FTGPIO010 @%p registered\n", g->base); in ftgpio_gpio_probe()
319 if (!IS_ERR(g->clk)) in ftgpio_gpio_probe()
320 clk_disable_unprepare(g->clk); in ftgpio_gpio_probe()
326 struct ftgpio_gpio *g = platform_get_drvdata(pdev); in ftgpio_gpio_remove() local
328 if (!IS_ERR(g->clk)) in ftgpio_gpio_remove()
329 clk_disable_unprepare(g->clk); in ftgpio_gpio_remove()