Lines Matching +full:gpio +full:- +full:mm +full:- +full:lantiq
1 // SPDX-License-Identifier: GPL-2.0-only
12 #include <linux/gpio/driver.h>
13 #include <linux/gpio/legacy-of-mm-gpiochip.h>
35 * ltq_mm_apply() - write the shadow value to the ebu address.
47 __raw_writew(chip->shadow, chip->mmchip.regs); in ltq_mm_apply()
53 * ltq_mm_set() - gpio_chip->set - set gpios.
55 * @gpio: GPIO signal number.
65 chip->shadow |= (1 << offset); in ltq_mm_set()
67 chip->shadow &= ~(1 << offset); in ltq_mm_set()
74 * ltq_mm_dir_out() - gpio_chip->dir_out - set gpio direction.
76 * @gpio: GPIO signal number.
87 * ltq_mm_save_regs() - Set initial values of GPIO pins
88 * @mm_gc: pointer to memory mapped GPIO chip structure
96 ltq_ebu_w32(CPHYSADDR(chip->mmchip.regs) | 0x1, LTQ_EBU_ADDRSEL1); in ltq_mm_save_regs()
106 chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL); in ltq_mm_probe()
108 return -ENOMEM; in ltq_mm_probe()
112 chip->mmchip.gc.ngpio = 16; in ltq_mm_probe()
113 chip->mmchip.gc.direction_output = ltq_mm_dir_out; in ltq_mm_probe()
114 chip->mmchip.gc.set = ltq_mm_set; in ltq_mm_probe()
115 chip->mmchip.save_regs = ltq_mm_save_regs; in ltq_mm_probe()
118 if (!of_property_read_u32(pdev->dev.of_node, "lantiq,shadow", &shadow)) in ltq_mm_probe()
119 chip->shadow = shadow; in ltq_mm_probe()
121 return of_mm_gpiochip_add_data(pdev->dev.of_node, &chip->mmchip, chip); in ltq_mm_probe()
128 of_mm_gpiochip_remove(&chip->mmchip); in ltq_mm_remove()
132 { .compatible = "lantiq,gpio-mm" },
141 .name = "gpio-mm-ltq",