Lines Matching +full:syscon +full:- +full:wakeup

1 // SPDX-License-Identifier: GPL-2.0
14 #include <linux/mfd/syscon.h>
26 * wakeup signal generation
53 * sama5d2_piobu_setup_pin() - prepares a pin for set_direction call
56 * Do not consider pin as tamper wakeup interrupt source
65 ret = regmap_update_bits(piobu->regmap, PIOBU_BMPR, mask, 0); in sama5d2_piobu_setup_pin()
69 ret = regmap_update_bits(piobu->regmap, PIOBU_NMPR, mask, 0); in sama5d2_piobu_setup_pin()
73 return regmap_update_bits(piobu->regmap, PIOBU_WKPR, mask, 0); in sama5d2_piobu_setup_pin()
77 * sama5d2_piobu_write_value() - writes value & mask at the pin's PIOBU register
88 return regmap_update_bits(piobu->regmap, reg, mask, value); in sama5d2_piobu_write_value()
92 * sama5d2_piobu_read_value() - read the value with masking from the pin's PIOBU
104 ret = regmap_read(piobu->regmap, reg, &val); in sama5d2_piobu_read_value()
112 * sama5d2_piobu_get_direction() - gpiochip get_direction
127 * sama5d2_piobu_direction_input() - gpiochip direction_input
136 * sama5d2_piobu_direction_output() - gpiochip direction_output
151 * sama5d2_piobu_get() - gpiochip get
170 * sama5d2_piobu_set() - gpiochip set
188 piobu = devm_kzalloc(&pdev->dev, sizeof(*piobu), GFP_KERNEL); in sama5d2_piobu_probe()
190 return -ENOMEM; in sama5d2_piobu_probe()
192 piobu->chip.label = pdev->name; in sama5d2_piobu_probe()
193 piobu->chip.parent = &pdev->dev; in sama5d2_piobu_probe()
194 piobu->chip.owner = THIS_MODULE; in sama5d2_piobu_probe()
195 piobu->chip.get_direction = sama5d2_piobu_get_direction; in sama5d2_piobu_probe()
196 piobu->chip.direction_input = sama5d2_piobu_direction_input; in sama5d2_piobu_probe()
197 piobu->chip.direction_output = sama5d2_piobu_direction_output; in sama5d2_piobu_probe()
198 piobu->chip.get = sama5d2_piobu_get; in sama5d2_piobu_probe()
199 piobu->chip.set = sama5d2_piobu_set; in sama5d2_piobu_probe()
200 piobu->chip.base = -1; in sama5d2_piobu_probe()
201 piobu->chip.ngpio = PIOBU_NUM; in sama5d2_piobu_probe()
202 piobu->chip.can_sleep = 0; in sama5d2_piobu_probe()
204 piobu->regmap = syscon_node_to_regmap(pdev->dev.of_node); in sama5d2_piobu_probe()
205 if (IS_ERR(piobu->regmap)) { in sama5d2_piobu_probe()
206 dev_err(&pdev->dev, "Failed to get syscon regmap %ld\n", in sama5d2_piobu_probe()
207 PTR_ERR(piobu->regmap)); in sama5d2_piobu_probe()
208 return PTR_ERR(piobu->regmap); in sama5d2_piobu_probe()
211 ret = devm_gpiochip_add_data(&pdev->dev, &piobu->chip, piobu); in sama5d2_piobu_probe()
213 dev_err(&pdev->dev, "Failed to add gpiochip %d\n", ret); in sama5d2_piobu_probe()
218 ret = sama5d2_piobu_setup_pin(&piobu->chip, i); in sama5d2_piobu_probe()
220 dev_err(&pdev->dev, "Failed to setup pin: %d %d\n", in sama5d2_piobu_probe()
230 { .compatible = "atmel,sama5d2-secumod" },
237 .name = "sama5d2-piobu",