Lines Matching +full:pctrl +full:- +full:syscon
1 // SPDX-License-Identifier: GPL-2.0
9 #include <linux/mfd/syscon.h>
16 #include <linux/pinctrl/pinconf-generic.h>
123 raw_spin_lock_irqsave(&gc->bgpio_lock, flags); in npcm_gpio_set()
125 raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); in npcm_gpio_set()
133 raw_spin_lock_irqsave(&gc->bgpio_lock, flags); in npcm_gpio_clr()
135 raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); in npcm_gpio_clr()
143 ioread32(bank->base + NPCM8XX_GP_N_DIN), in npcmgpio_dbg_show()
144 ioread32(bank->base + NPCM8XX_GP_N_DOUT), in npcmgpio_dbg_show()
145 ioread32(bank->base + NPCM8XX_GP_N_IEM), in npcmgpio_dbg_show()
146 ioread32(bank->base + NPCM8XX_GP_N_OE)); in npcmgpio_dbg_show()
148 ioread32(bank->base + NPCM8XX_GP_N_PU), in npcmgpio_dbg_show()
149 ioread32(bank->base + NPCM8XX_GP_N_PD), in npcmgpio_dbg_show()
150 ioread32(bank->base + NPCM8XX_GP_N_DBNC), in npcmgpio_dbg_show()
151 ioread32(bank->base + NPCM8XX_GP_N_POL)); in npcmgpio_dbg_show()
153 ioread32(bank->base + NPCM8XX_GP_N_EVTYP), in npcmgpio_dbg_show()
154 ioread32(bank->base + NPCM8XX_GP_N_EVBE), in npcmgpio_dbg_show()
155 ioread32(bank->base + NPCM8XX_GP_N_EVEN), in npcmgpio_dbg_show()
156 ioread32(bank->base + NPCM8XX_GP_N_EVST)); in npcmgpio_dbg_show()
158 ioread32(bank->base + NPCM8XX_GP_N_OTYP), in npcmgpio_dbg_show()
159 ioread32(bank->base + NPCM8XX_GP_N_OSRC), in npcmgpio_dbg_show()
160 ioread32(bank->base + NPCM8XX_GP_N_ODSC)); in npcmgpio_dbg_show()
162 ioread32(bank->base + NPCM8XX_GP_N_OBL0), in npcmgpio_dbg_show()
163 ioread32(bank->base + NPCM8XX_GP_N_OBL1), in npcmgpio_dbg_show()
164 ioread32(bank->base + NPCM8XX_GP_N_OBL2), in npcmgpio_dbg_show()
165 ioread32(bank->base + NPCM8XX_GP_N_OBL3)); in npcmgpio_dbg_show()
167 ioread32(bank->base + NPCM8XX_GP_N_SPLCK), in npcmgpio_dbg_show()
168 ioread32(bank->base + NPCM8XX_GP_N_MPLCK)); in npcmgpio_dbg_show()
180 return bank->direction_input(chip, offset); in npcmgpio_direction_input()
193 return bank->direction_output(chip, offset, value); in npcmgpio_direction_output()
205 return bank->request(chip, offset); in npcmgpio_gpio_request()
220 sts = ioread32(bank->base + NPCM8XX_GP_N_EVST); in npcmgpio_irq_handler()
221 en = ioread32(bank->base + NPCM8XX_GP_N_EVEN); in npcmgpio_irq_handler()
224 generic_handle_domain_irq(gc->irq.domain, bit); in npcmgpio_irq_handler()
236 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_EVBE, gpio); in npcmgpio_set_irq_type()
237 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_POL, gpio); in npcmgpio_set_irq_type()
240 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_EVBE, gpio); in npcmgpio_set_irq_type()
241 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_POL, gpio); in npcmgpio_set_irq_type()
244 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_POL, gpio); in npcmgpio_set_irq_type()
245 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_EVBE, gpio); in npcmgpio_set_irq_type()
248 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_POL, gpio); in npcmgpio_set_irq_type()
251 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_POL, gpio); in npcmgpio_set_irq_type()
254 return -EINVAL; in npcmgpio_set_irq_type()
258 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_EVTYP, gpio); in npcmgpio_set_irq_type()
261 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_EVTYP, gpio); in npcmgpio_set_irq_type()
274 iowrite32(BIT(gpio), bank->base + NPCM8XX_GP_N_EVST); in npcmgpio_irq_ack()
283 iowrite32(BIT(gpio), bank->base + NPCM8XX_GP_N_EVENC); in npcmgpio_irq_mask()
292 iowrite32(BIT(gpio), bank->base + NPCM8XX_GP_N_EVENS); in npcmgpio_irq_unmask()
300 /* active-high, input, clear interrupt, enable interrupt */ in npcmgpio_irq_startup()
309 .name = "NPCM8XX-GPIO-IRQ",
1828 if (mode == fn_gpio || cfg->fn0 == mode || cfg->fn1 == mode || in npcm8xx_setfunc()
1829 cfg->fn2 == mode || cfg->fn3 == mode || cfg->fn4 == mode) { in npcm8xx_setfunc()
1830 if (cfg->reg0) in npcm8xx_setfunc()
1831 regmap_update_bits(gcr_regmap, cfg->reg0, in npcm8xx_setfunc()
1832 BIT(cfg->bit0), in npcm8xx_setfunc()
1833 (cfg->fn0 == mode) ? in npcm8xx_setfunc()
1834 BIT(cfg->bit0) : 0); in npcm8xx_setfunc()
1835 if (cfg->reg1) in npcm8xx_setfunc()
1836 regmap_update_bits(gcr_regmap, cfg->reg1, in npcm8xx_setfunc()
1837 BIT(cfg->bit1), in npcm8xx_setfunc()
1838 (cfg->fn1 == mode) ? in npcm8xx_setfunc()
1839 BIT(cfg->bit1) : 0); in npcm8xx_setfunc()
1840 if (cfg->reg2) in npcm8xx_setfunc()
1841 regmap_update_bits(gcr_regmap, cfg->reg2, in npcm8xx_setfunc()
1842 BIT(cfg->bit2), in npcm8xx_setfunc()
1843 (cfg->fn2 == mode) ? in npcm8xx_setfunc()
1844 BIT(cfg->bit2) : 0); in npcm8xx_setfunc()
1845 if (cfg->reg3) in npcm8xx_setfunc()
1846 regmap_update_bits(gcr_regmap, cfg->reg3, in npcm8xx_setfunc()
1847 BIT(cfg->bit3), in npcm8xx_setfunc()
1848 (cfg->fn3 == mode) ? in npcm8xx_setfunc()
1849 BIT(cfg->bit3) : 0); in npcm8xx_setfunc()
1850 if (cfg->reg4) in npcm8xx_setfunc()
1851 regmap_update_bits(gcr_regmap, cfg->reg4, in npcm8xx_setfunc()
1852 BIT(cfg->bit4), in npcm8xx_setfunc()
1853 (cfg->fn4 == mode) ? in npcm8xx_setfunc()
1854 BIT(cfg->bit4) : 0); in npcm8xx_setfunc()
1862 int gpio = pin % bank->gc.ngpio; in npcm8xx_get_slew_rate()
1867 return ioread32(bank->base + NPCM8XX_GP_N_OSRC) & pinmask; in npcm8xx_get_slew_rate()
1874 return -EINVAL; in npcm8xx_get_slew_rate()
1881 void __iomem *OSRC_Offset = bank->base + NPCM8XX_GP_N_OSRC; in npcm8xx_set_slew_rate()
1882 int gpio = BIT(pin % bank->gc.ngpio); in npcm8xx_set_slew_rate()
1887 npcm_gpio_clr(&bank->gc, OSRC_Offset, gpio); in npcm8xx_set_slew_rate()
1890 npcm_gpio_set(&bank->gc, OSRC_Offset, gpio); in npcm8xx_set_slew_rate()
1893 return -EINVAL; in npcm8xx_set_slew_rate()
1898 return -EINVAL; in npcm8xx_set_slew_rate()
1910 return -EINVAL; in npcm8xx_set_slew_rate()
1921 &npcm->gpio_bank[pin / NPCM8XX_GPIO_PER_BANK]; in npcm8xx_get_drive_strength()
1922 int gpio = pin % bank->gc.ngpio; in npcm8xx_get_drive_strength()
1929 return -EINVAL; in npcm8xx_get_drive_strength()
1931 val = ioread32(bank->base + NPCM8XX_GP_N_ODSC) & pinmask; in npcm8xx_get_drive_strength()
1933 dev_dbg(bank->gc.parent, "pin %d strength %d = %d\n", pin, val, ds); in npcm8xx_get_drive_strength()
1942 &npcm->gpio_bank[pin / NPCM8XX_GPIO_PER_BANK]; in npcm8xx_set_drive_strength()
1943 int gpio = BIT(pin % bank->gc.ngpio); in npcm8xx_set_drive_strength()
1949 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_ODSC, gpio); in npcm8xx_set_drive_strength()
1951 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_ODSC, gpio); in npcm8xx_set_drive_strength()
1953 return -ENOTSUPP; in npcm8xx_set_drive_strength()
2033 npcm8xx_setfunc(npcm->gcr_regmap, npcm8xx_pingroups[group].pins, in npcm8xx_pinmux_set_mux()
2050 npcm8xx_setfunc(npcm->gcr_regmap, &offset, 1, mode); in npcm8xx_gpio_request_enable()
2062 virq = irq_find_mapping(npcm->domain, offset); in npcm8xx_gpio_request_free()
2073 &npcm->gpio_bank[offset / NPCM8XX_GPIO_PER_BANK]; in npcm_gpio_set_direction()
2074 int gpio = BIT(offset % bank->gc.ngpio); in npcm_gpio_set_direction()
2077 iowrite32(gpio, bank->base + NPCM8XX_GP_N_OEC); in npcm_gpio_set_direction()
2079 iowrite32(gpio, bank->base + NPCM8XX_GP_N_OES); in npcm_gpio_set_direction()
2097 void __iomem *DBNCS_offset = bank->base + NPCM8XX_GP_N_DBNCS0 + (gpio / 4); in debounce_timing_setting()
2102 if (bank->debounce.set_val[i]) { in debounce_timing_setting()
2103 if (bank->debounce.nanosec_val[i] == nanosecs) { in debounce_timing_setting()
2105 npcm_gpio_set(&bank->gc, DBNCS_offset, in debounce_timing_setting()
2110 bank->debounce.set_val[i] = true; in debounce_timing_setting()
2111 bank->debounce.nanosec_val[i] = nanosecs; in debounce_timing_setting()
2113 npcm_gpio_set(&bank->gc, DBNCS_offset, debounce_select); in debounce_timing_setting()
2116 iowrite32(0, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2119 iowrite32(0x10, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2122 iowrite32(0x20, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2125 iowrite32(0x30, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2128 iowrite32(0x40, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2131 iowrite32(0x50, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2134 iowrite32(0x60, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2137 iowrite32(0x70, bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2142 return -ENOTSUPP; in debounce_timing_setting()
2147 bank->base + NPCM8XX_GP_N_DBNCP0 + (i * 4)); in debounce_timing_setting()
2155 return -ENOTSUPP; in debounce_timing_setting()
2164 &npcm->gpio_bank[pin / NPCM8XX_GPIO_PER_BANK]; in npcm_set_debounce()
2165 int gpio = BIT(pin % bank->gc.ngpio); in npcm_set_debounce()
2169 ret = debounce_timing_setting(bank, pin % bank->gc.ngpio, in npcm_set_debounce()
2172 …dev_err(npcm->dev, "Pin %d, All four debounce timing values are used, please use one of exist debo… in npcm_set_debounce()
2174 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_DBNC, in npcm_set_debounce()
2179 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_DBNC, gpio); in npcm_set_debounce()
2191 &npcm->gpio_bank[pin / NPCM8XX_GPIO_PER_BANK]; in npcm8xx_config_get()
2192 int gpio = pin % bank->gc.ngpio; in npcm8xx_config_get()
2201 pu = ioread32(bank->base + NPCM8XX_GP_N_PU) & pinmask; in npcm8xx_config_get()
2202 pd = ioread32(bank->base + NPCM8XX_GP_N_PD) & pinmask; in npcm8xx_config_get()
2212 ie = ioread32(bank->base + NPCM8XX_GP_N_IEM) & pinmask; in npcm8xx_config_get()
2213 oe = ioread32(bank->base + NPCM8XX_GP_N_OE) & pinmask; in npcm8xx_config_get()
2220 rc = !(ioread32(bank->base + NPCM8XX_GP_N_OTYP) & pinmask); in npcm8xx_config_get()
2223 rc = ioread32(bank->base + NPCM8XX_GP_N_OTYP) & pinmask; in npcm8xx_config_get()
2226 rc = ioread32(bank->base + NPCM8XX_GP_N_DBNC) & pinmask; in npcm8xx_config_get()
2234 rc = npcm8xx_get_slew_rate(bank, npcm->gcr_regmap, pin); in npcm8xx_config_get()
2239 return -ENOTSUPP; in npcm8xx_config_get()
2243 return -EINVAL; in npcm8xx_config_get()
2253 &npcm->gpio_bank[pin / NPCM8XX_GPIO_PER_BANK]; in npcm8xx_config_set_one()
2255 int gpio = BIT(pin % bank->gc.ngpio); in npcm8xx_config_set_one()
2259 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_PU, gpio); in npcm8xx_config_set_one()
2260 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_PD, gpio); in npcm8xx_config_set_one()
2263 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_PU, gpio); in npcm8xx_config_set_one()
2264 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_PD, gpio); in npcm8xx_config_set_one()
2267 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_PD, gpio); in npcm8xx_config_set_one()
2268 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_PU, gpio); in npcm8xx_config_set_one()
2271 iowrite32(gpio, bank->base + NPCM8XX_GP_N_OEC); in npcm8xx_config_set_one()
2272 bank->direction_input(&bank->gc, pin % bank->gc.ngpio); in npcm8xx_config_set_one()
2275 bank->direction_output(&bank->gc, pin % bank->gc.ngpio, arg); in npcm8xx_config_set_one()
2276 iowrite32(gpio, bank->base + NPCM8XX_GP_N_OES); in npcm8xx_config_set_one()
2279 npcm_gpio_clr(&bank->gc, bank->base + NPCM8XX_GP_N_OTYP, gpio); in npcm8xx_config_set_one()
2282 npcm_gpio_set(&bank->gc, bank->base + NPCM8XX_GP_N_OTYP, gpio); in npcm8xx_config_set_one()
2287 return npcm8xx_set_slew_rate(bank, npcm->gcr_regmap, pin, arg); in npcm8xx_config_set_one()
2291 return -ENOTSUPP; in npcm8xx_config_set_one()
2303 while (num_configs--) { in npcm8xx_config_set()
2320 .name = "npcm8xx-pinctrl",
2333 return gpiochip_add_pin_range(&bank->gc, dev_name(chip->parent), in npcmgpio_add_pin_ranges()
2334 bank->pinctrl_id, bank->gc.base, in npcmgpio_add_pin_ranges()
2335 bank->gc.ngpio); in npcmgpio_add_pin_ranges()
2338 static int npcm8xx_gpio_fw(struct npcm8xx_pinctrl *pctrl) in npcm8xx_gpio_fw() argument
2341 struct device *dev = pctrl->dev; in npcm8xx_gpio_fw()
2343 int ret = -ENXIO; in npcm8xx_gpio_fw()
2347 pctrl->gpio_bank[id].base = fwnode_iomap(child, 0); in npcm8xx_gpio_fw()
2348 if (!pctrl->gpio_bank[id].base) in npcm8xx_gpio_fw()
2349 return dev_err_probe(dev, -ENXIO, "fwnode_iomap id %d failed\n", id); in npcm8xx_gpio_fw()
2351 ret = bgpio_init(&pctrl->gpio_bank[id].gc, dev, 4, in npcm8xx_gpio_fw()
2352 pctrl->gpio_bank[id].base + NPCM8XX_GP_N_DIN, in npcm8xx_gpio_fw()
2353 pctrl->gpio_bank[id].base + NPCM8XX_GP_N_DOUT, in npcm8xx_gpio_fw()
2356 pctrl->gpio_bank[id].base + NPCM8XX_GP_N_IEM, in npcm8xx_gpio_fw()
2361 ret = fwnode_property_get_reference_args(child, "gpio-ranges", NULL, 3, 0, &args); in npcm8xx_gpio_fw()
2363 return dev_err_probe(dev, ret, "gpio-ranges fail for GPIO bank %u\n", id); in npcm8xx_gpio_fw()
2369 pctrl->gpio_bank[id].irq = ret; in npcm8xx_gpio_fw()
2370 pctrl->gpio_bank[id].irq_chip = npcmgpio_irqchip; in npcm8xx_gpio_fw()
2371 pctrl->gpio_bank[id].irqbase = id * NPCM8XX_GPIO_PER_BANK; in npcm8xx_gpio_fw()
2372 pctrl->gpio_bank[id].pinctrl_id = args.args[0]; in npcm8xx_gpio_fw()
2373 pctrl->gpio_bank[id].gc.base = -1; in npcm8xx_gpio_fw()
2374 pctrl->gpio_bank[id].gc.ngpio = args.args[2]; in npcm8xx_gpio_fw()
2375 pctrl->gpio_bank[id].gc.owner = THIS_MODULE; in npcm8xx_gpio_fw()
2376 pctrl->gpio_bank[id].gc.parent = dev; in npcm8xx_gpio_fw()
2377 pctrl->gpio_bank[id].gc.fwnode = child; in npcm8xx_gpio_fw()
2378 pctrl->gpio_bank[id].gc.label = devm_kasprintf(dev, GFP_KERNEL, "%pfw", child); in npcm8xx_gpio_fw()
2379 if (pctrl->gpio_bank[id].gc.label == NULL) in npcm8xx_gpio_fw()
2380 return -ENOMEM; in npcm8xx_gpio_fw()
2382 pctrl->gpio_bank[id].gc.dbg_show = npcmgpio_dbg_show; in npcm8xx_gpio_fw()
2383 pctrl->gpio_bank[id].direction_input = pctrl->gpio_bank[id].gc.direction_input; in npcm8xx_gpio_fw()
2384 pctrl->gpio_bank[id].gc.direction_input = npcmgpio_direction_input; in npcm8xx_gpio_fw()
2385 pctrl->gpio_bank[id].direction_output = pctrl->gpio_bank[id].gc.direction_output; in npcm8xx_gpio_fw()
2386 pctrl->gpio_bank[id].gc.direction_output = npcmgpio_direction_output; in npcm8xx_gpio_fw()
2387 pctrl->gpio_bank[id].request = pctrl->gpio_bank[id].gc.request; in npcm8xx_gpio_fw()
2388 pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request; in npcm8xx_gpio_fw()
2389 pctrl->gpio_bank[id].gc.free = pinctrl_gpio_free; in npcm8xx_gpio_fw()
2391 pctrl->gpio_bank[id].debounce.set_val[i] = false; in npcm8xx_gpio_fw()
2392 pctrl->gpio_bank[id].gc.add_pin_ranges = npcmgpio_add_pin_ranges; in npcm8xx_gpio_fw()
2396 pctrl->bank_num = id; in npcm8xx_gpio_fw()
2400 static int npcm8xx_gpio_register(struct npcm8xx_pinctrl *pctrl) in npcm8xx_gpio_register() argument
2404 for (id = 0 ; id < pctrl->bank_num ; id++) { in npcm8xx_gpio_register()
2407 girq = &pctrl->gpio_bank[id].gc.irq; in npcm8xx_gpio_register()
2408 girq->chip = &pctrl->gpio_bank[id].irq_chip; in npcm8xx_gpio_register()
2409 girq->parent_handler = npcmgpio_irq_handler; in npcm8xx_gpio_register()
2410 girq->num_parents = 1; in npcm8xx_gpio_register()
2411 girq->parents = devm_kcalloc(pctrl->dev, girq->num_parents, in npcm8xx_gpio_register()
2412 sizeof(*girq->parents), in npcm8xx_gpio_register()
2414 if (!girq->parents) in npcm8xx_gpio_register()
2415 return -ENOMEM; in npcm8xx_gpio_register()
2417 girq->parents[0] = pctrl->gpio_bank[id].irq; in npcm8xx_gpio_register()
2418 girq->default_type = IRQ_TYPE_NONE; in npcm8xx_gpio_register()
2419 girq->handler = handle_level_irq; in npcm8xx_gpio_register()
2420 ret = devm_gpiochip_add_data(pctrl->dev, in npcm8xx_gpio_register()
2421 &pctrl->gpio_bank[id].gc, in npcm8xx_gpio_register()
2422 &pctrl->gpio_bank[id]); in npcm8xx_gpio_register()
2424 return dev_err_probe(pctrl->dev, ret, "Failed to add GPIO chip %u\n", id); in npcm8xx_gpio_register()
2432 struct device *dev = &pdev->dev; in npcm8xx_pinctrl_probe()
2433 struct npcm8xx_pinctrl *pctrl; in npcm8xx_pinctrl_probe() local
2436 pctrl = devm_kzalloc(dev, sizeof(*pctrl), GFP_KERNEL); in npcm8xx_pinctrl_probe()
2437 if (!pctrl) in npcm8xx_pinctrl_probe()
2438 return -ENOMEM; in npcm8xx_pinctrl_probe()
2440 pctrl->dev = dev; in npcm8xx_pinctrl_probe()
2441 platform_set_drvdata(pdev, pctrl); in npcm8xx_pinctrl_probe()
2443 pctrl->gcr_regmap = in npcm8xx_pinctrl_probe()
2444 syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr"); in npcm8xx_pinctrl_probe()
2445 if (IS_ERR(pctrl->gcr_regmap)) in npcm8xx_pinctrl_probe()
2446 return dev_err_probe(dev, PTR_ERR(pctrl->gcr_regmap), in npcm8xx_pinctrl_probe()
2449 ret = npcm8xx_gpio_fw(pctrl); in npcm8xx_pinctrl_probe()
2452 "Failed to gpio dt-binding\n"); in npcm8xx_pinctrl_probe()
2454 pctrl->pctldev = devm_pinctrl_register(dev, &npcm8xx_pinctrl_desc, pctrl); in npcm8xx_pinctrl_probe()
2455 if (IS_ERR(pctrl->pctldev)) in npcm8xx_pinctrl_probe()
2456 return dev_err_probe(dev, PTR_ERR(pctrl->pctldev), in npcm8xx_pinctrl_probe()
2459 ret = npcm8xx_gpio_register(pctrl); in npcm8xx_pinctrl_probe()
2467 { .compatible = "nuvoton,npcm845-pinctrl" },
2475 .name = "npcm8xx-pinctrl",