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()
79 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_unmask() local
82 iowrite32(BIT(d->hwirq), cgpio->regs + CDNS_GPIO_IRQ_EN); in cdns_gpio_irq_unmask()
88 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_set_type() local
97 int_value = ioread32(cgpio->regs + CDNS_GPIO_IRQ_VALUE) & ~mask; in cdns_gpio_irq_set_type()
98 int_type = ioread32(cgpio->regs + CDNS_GPIO_IRQ_TYPE) & ~mask; in cdns_gpio_irq_set_type()
116 iowrite32(int_value, cgpio->regs + CDNS_GPIO_IRQ_VALUE); in cdns_gpio_irq_set_type()
117 iowrite32(int_type, cgpio->regs + CDNS_GPIO_IRQ_TYPE); in cdns_gpio_irq_set_type()
127 struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip); in cdns_gpio_irq_handler() local
134 status = ioread32(cgpio->regs + CDNS_GPIO_IRQ_STATUS) & in cdns_gpio_irq_handler()
135 ~ioread32(cgpio->regs + CDNS_GPIO_IRQ_MASK); in cdns_gpio_irq_handler()
154 struct cdns_gpio_chip *cgpio; in cdns_gpio_probe() local
159 cgpio = devm_kzalloc(&pdev->dev, sizeof(*cgpio), GFP_KERNEL); in cdns_gpio_probe()
160 if (!cgpio) in cdns_gpio_probe()
163 cgpio->regs = devm_platform_ioremap_resource(pdev, 0); in cdns_gpio_probe()
164 if (IS_ERR(cgpio->regs)) in cdns_gpio_probe()
165 return PTR_ERR(cgpio->regs); in cdns_gpio_probe()
181 dir_prev = ioread32(cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
183 cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
185 ret = bgpio_init(&cgpio->gc, &pdev->dev, 4, in cdns_gpio_probe()
186 cgpio->regs + CDNS_GPIO_INPUT_VALUE, in cdns_gpio_probe()
187 cgpio->regs + CDNS_GPIO_OUTPUT_VALUE, in cdns_gpio_probe()
190 cgpio->regs + CDNS_GPIO_DIRECTION_MODE, in cdns_gpio_probe()
198 cgpio->gc.label = dev_name(&pdev->dev); in cdns_gpio_probe()
199 cgpio->gc.ngpio = num_gpios; in cdns_gpio_probe()
200 cgpio->gc.parent = &pdev->dev; in cdns_gpio_probe()
201 cgpio->gc.base = -1; in cdns_gpio_probe()
202 cgpio->gc.owner = THIS_MODULE; in cdns_gpio_probe()
203 cgpio->gc.request = cdns_gpio_request; in cdns_gpio_probe()
204 cgpio->gc.free = cdns_gpio_free; in cdns_gpio_probe()
206 cgpio->pclk = devm_clk_get(&pdev->dev, NULL); in cdns_gpio_probe()
207 if (IS_ERR(cgpio->pclk)) { in cdns_gpio_probe()
208 ret = PTR_ERR(cgpio->pclk); in cdns_gpio_probe()
214 ret = clk_prepare_enable(cgpio->pclk); in cdns_gpio_probe()
228 girq = &cgpio->gc.irq; in cdns_gpio_probe()
244 ret = devm_gpiochip_add_data(&pdev->dev, &cgpio->gc, cgpio); in cdns_gpio_probe()
250 cgpio->bypass_orig = ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_probe()
256 cgpio->regs + CDNS_GPIO_OUTPUT_EN); in cdns_gpio_probe()
257 iowrite32(0, cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_probe()
259 platform_set_drvdata(pdev, cgpio); in cdns_gpio_probe()
263 clk_disable_unprepare(cgpio->pclk); in cdns_gpio_probe()
266 iowrite32(dir_prev, cgpio->regs + CDNS_GPIO_DIRECTION_MODE); in cdns_gpio_probe()
273 struct cdns_gpio_chip *cgpio = platform_get_drvdata(pdev); in cdns_gpio_remove() local
275 iowrite32(cgpio->bypass_orig, cgpio->regs + CDNS_GPIO_BYPASS_MODE); in cdns_gpio_remove()
276 clk_disable_unprepare(cgpio->pclk); in cdns_gpio_remove()