Lines Matching refs:cgpio

41 	struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip);  in cdns_gpio_request()  local
46 iowrite32(ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE) & ~BIT(offset), in cdns_gpio_request()
47 cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_request()
55 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_free() local
60 iowrite32(ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE) | in cdns_gpio_free()
61 (BIT(offset) & cgpio->bypass_orig), in cdns_gpio_free()
62 cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_free()
70 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_mask() local
72 iowrite32(BIT(d->hwirq), cgpio->regs + CDNS_GPIO_IRQ_DIS); in cdns_gpio_irq_mask()
78 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_unmask() local
80 iowrite32(BIT(d->hwirq), cgpio->regs + CDNS_GPIO_IRQ_EN); in cdns_gpio_irq_unmask()
86 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_set_type() local
95 int_value = ioread32(cgpio->regs + CDNS_GPIO_IRQ_VALUE) & ~mask; in cdns_gpio_irq_set_type()
96 int_type = ioread32(cgpio->regs + CDNS_GPIO_IRQ_TYPE) & ~mask; in cdns_gpio_irq_set_type()
114 iowrite32(int_value, cgpio->regs + CDNS_GPIO_IRQ_VALUE); in cdns_gpio_irq_set_type()
115 iowrite32(int_type, cgpio->regs + CDNS_GPIO_IRQ_TYPE); in cdns_gpio_irq_set_type()
125 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_handler() local
132 status = ioread32(cgpio->regs + CDNS_GPIO_IRQ_STATUS) & in cdns_gpio_irq_handler()
133 ~ioread32(cgpio->regs + CDNS_GPIO_IRQ_MASK); in cdns_gpio_irq_handler()
150 struct cdns_gpio_chip *cgpio; in cdns_gpio_probe() local
155 cgpio = devm_kzalloc(&pdev->dev, sizeof(*cgpio), GFP_KERNEL); in cdns_gpio_probe()
156 if (!cgpio) in cdns_gpio_probe()
159 cgpio->regs = devm_platform_ioremap_resource(pdev, 0); in cdns_gpio_probe()
160 if (IS_ERR(cgpio->regs)) in cdns_gpio_probe()
161 return PTR_ERR(cgpio->regs); in cdns_gpio_probe()
177 dir_prev = ioread32(cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
179 cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
181 ret = bgpio_init(&cgpio->gc, &pdev->dev, 4, in cdns_gpio_probe()
182 cgpio->regs + CDNS_GPIO_INPUT_VALUE, in cdns_gpio_probe()
183 cgpio->regs + CDNS_GPIO_OUTPUT_VALUE, in cdns_gpio_probe()
186 cgpio->regs + CDNS_GPIO_DIRECTION_MODE, in cdns_gpio_probe()
194 cgpio->gc.label = dev_name(&pdev->dev); in cdns_gpio_probe()
195 cgpio->gc.ngpio = num_gpios; in cdns_gpio_probe()
196 cgpio->gc.parent = &pdev->dev; in cdns_gpio_probe()
197 cgpio->gc.base = -1; in cdns_gpio_probe()
198 cgpio->gc.owner = THIS_MODULE; in cdns_gpio_probe()
199 cgpio->gc.request = cdns_gpio_request; in cdns_gpio_probe()
200 cgpio->gc.free = cdns_gpio_free; in cdns_gpio_probe()
202 cgpio->pclk = devm_clk_get(&pdev->dev, NULL); in cdns_gpio_probe()
203 if (IS_ERR(cgpio->pclk)) { in cdns_gpio_probe()
204 ret = PTR_ERR(cgpio->pclk); in cdns_gpio_probe()
210 ret = clk_prepare_enable(cgpio->pclk); in cdns_gpio_probe()
224 girq = &cgpio->gc.irq; in cdns_gpio_probe()
240 ret = devm_gpiochip_add_data(&pdev->dev, &cgpio->gc, cgpio); in cdns_gpio_probe()
246 cgpio->bypass_orig = ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_probe()
252 cgpio->regs + CDNS_GPIO_OUTPUT_EN); in cdns_gpio_probe()
253 iowrite32(0, cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_probe()
255 platform_set_drvdata(pdev, cgpio); in cdns_gpio_probe()
259 clk_disable_unprepare(cgpio->pclk); in cdns_gpio_probe()
262 iowrite32(dir_prev, cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
269 struct cdns_gpio_chip *cgpio = platform_get_drvdata(pdev); in cdns_gpio_remove() local
271 iowrite32(cgpio->bypass_orig, cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_remove()
272 clk_disable_unprepare(cgpio->pclk); in cdns_gpio_remove()