Lines Matching +full:mpfs +full:- +full:clock
1 // SPDX-License-Identifier: (GPL-2.0)
3 * Microchip PolarFire SoC (MPFS) GPIO controller driver
5 * Copyright (c) 2018-2024 Microchip Technology Inc. and its subsidiaries
61 regmap_update_bits(mpfs_gpio->regs, MPFS_GPIO_CTRL(gpio_index), in mpfs_gpio_direction_input()
71 regmap_update_bits(mpfs_gpio->regs, MPFS_GPIO_CTRL(gpio_index), in mpfs_gpio_direction_output()
73 regmap_update_bits(mpfs_gpio->regs, mpfs_gpio->offsets->outp, BIT(gpio_index), in mpfs_gpio_direction_output()
85 regmap_read(mpfs_gpio->regs, MPFS_GPIO_CTRL(gpio_index), &gpio_cfg); in mpfs_gpio_get_direction()
97 return regmap_test_bits(mpfs_gpio->regs, mpfs_gpio->offsets->outp, BIT(gpio_index)); in mpfs_gpio_get()
99 return regmap_test_bits(mpfs_gpio->regs, mpfs_gpio->offsets->inp, BIT(gpio_index)); in mpfs_gpio_get()
108 regmap_update_bits(mpfs_gpio->regs, mpfs_gpio->offsets->outp, BIT(gpio_index), in mpfs_gpio_set()
116 struct device *dev = &pdev->dev; in mpfs_gpio_probe()
124 return -ENOMEM; in mpfs_gpio_probe()
126 mpfs_gpio->offsets = device_get_match_data(&pdev->dev); in mpfs_gpio_probe()
132 mpfs_gpio->regs = devm_regmap_init_mmio(dev, base, &mpfs_gpio_regmap_config); in mpfs_gpio_probe()
133 if (IS_ERR(mpfs_gpio->regs)) in mpfs_gpio_probe()
134 return dev_err_probe(dev, PTR_ERR(mpfs_gpio->regs), in mpfs_gpio_probe()
139 return dev_err_probe(dev, PTR_ERR(clk), "failed to get and enable clock\n"); in mpfs_gpio_probe()
146 mpfs_gpio->gc.direction_input = mpfs_gpio_direction_input; in mpfs_gpio_probe()
147 mpfs_gpio->gc.direction_output = mpfs_gpio_direction_output; in mpfs_gpio_probe()
148 mpfs_gpio->gc.get_direction = mpfs_gpio_get_direction; in mpfs_gpio_probe()
149 mpfs_gpio->gc.get = mpfs_gpio_get; in mpfs_gpio_probe()
150 mpfs_gpio->gc.set = mpfs_gpio_set; in mpfs_gpio_probe()
151 mpfs_gpio->gc.base = -1; in mpfs_gpio_probe()
152 mpfs_gpio->gc.ngpio = ngpios; in mpfs_gpio_probe()
153 mpfs_gpio->gc.label = dev_name(dev); in mpfs_gpio_probe()
154 mpfs_gpio->gc.parent = dev; in mpfs_gpio_probe()
155 mpfs_gpio->gc.owner = THIS_MODULE; in mpfs_gpio_probe()
157 return devm_gpiochip_add_data(dev, &mpfs_gpio->gc, mpfs_gpio); in mpfs_gpio_probe()
172 .compatible = "microchip,mpfs-gpio",
175 .compatible = "microchip,coregpio-rtl-v3",
184 .name = "microchip,mpfs-gpio",