Lines Matching full:pctrl
1830 static int npcm7xx_gpio_of(struct npcm7xx_pinctrl *pctrl)
1833 struct device *dev = pctrl->dev;
1839 pctrl->gpio_bank[id].base = fwnode_iomap(child, 0);
1840 if (!pctrl->gpio_bank[id].base)
1843 ret = bgpio_init(&pctrl->gpio_bank[id].gc, dev, 4,
1844 pctrl->gpio_bank[id].base + NPCM7XX_GP_N_DIN,
1845 pctrl->gpio_bank[id].base + NPCM7XX_GP_N_DOUT,
1848 pctrl->gpio_bank[id].base + NPCM7XX_GP_N_IEM,
1866 pctrl->gpio_bank[id].irq = ret;
1867 pctrl->gpio_bank[id].irqbase = id * NPCM7XX_GPIO_PER_BANK;
1868 pctrl->gpio_bank[id].pinctrl_id = args.args[0];
1869 pctrl->gpio_bank[id].gc.base = args.args[1];
1870 pctrl->gpio_bank[id].gc.ngpio = args.args[2];
1871 pctrl->gpio_bank[id].gc.owner = THIS_MODULE;
1872 pctrl->gpio_bank[id].gc.parent = dev;
1873 pctrl->gpio_bank[id].gc.fwnode = child;
1874 pctrl->gpio_bank[id].gc.label = devm_kasprintf(dev, GFP_KERNEL, "%pfw", child);
1875 if (pctrl->gpio_bank[id].gc.label == NULL)
1878 pctrl->gpio_bank[id].gc.dbg_show = npcmgpio_dbg_show;
1879 pctrl->gpio_bank[id].direction_input = pctrl->gpio_bank[id].gc.direction_input;
1880 pctrl->gpio_bank[id].gc.direction_input = npcmgpio_direction_input;
1881 pctrl->gpio_bank[id].direction_output = pctrl->gpio_bank[id].gc.direction_output;
1882 pctrl->gpio_bank[id].gc.direction_output = npcmgpio_direction_output;
1883 pctrl->gpio_bank[id].request = pctrl->gpio_bank[id].gc.request;
1884 pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request;
1885 pctrl->gpio_bank[id].gc.free = pinctrl_gpio_free;
1889 pctrl->bank_num = id;
1893 static int npcm7xx_gpio_register(struct npcm7xx_pinctrl *pctrl)
1897 for (id = 0 ; id < pctrl->bank_num ; id++) {
1900 girq = &pctrl->gpio_bank[id].gc.irq;
1904 girq->parents = devm_kcalloc(pctrl->dev, 1,
1911 girq->parents[0] = pctrl->gpio_bank[id].irq;
1914 ret = devm_gpiochip_add_data(pctrl->dev,
1915 &pctrl->gpio_bank[id].gc,
1916 &pctrl->gpio_bank[id]);
1918 dev_err(pctrl->dev, "Failed to add GPIO chip %u\n", id);
1922 ret = gpiochip_add_pin_range(&pctrl->gpio_bank[id].gc,
1923 dev_name(pctrl->dev),
1924 pctrl->gpio_bank[id].pinctrl_id,
1925 pctrl->gpio_bank[id].gc.base,
1926 pctrl->gpio_bank[id].gc.ngpio);
1928 dev_err(pctrl->dev, "Failed to add GPIO bank %u\n", id);
1929 gpiochip_remove(&pctrl->gpio_bank[id].gc);
1938 gpiochip_remove(&pctrl->gpio_bank[id - 1].gc);
1945 struct npcm7xx_pinctrl *pctrl;
1948 pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL);
1949 if (!pctrl)
1952 pctrl->dev = &pdev->dev;
1953 dev_set_drvdata(&pdev->dev, pctrl);
1955 pctrl->gcr_regmap =
1957 if (IS_ERR(pctrl->gcr_regmap)) {
1958 dev_err(pctrl->dev, "didn't find nuvoton,npcm750-gcr\n");
1959 return PTR_ERR(pctrl->gcr_regmap);
1962 ret = npcm7xx_gpio_of(pctrl);
1964 dev_err(pctrl->dev, "Failed to gpio dt-binding %u\n", ret);
1968 pctrl->pctldev = devm_pinctrl_register(&pdev->dev,
1969 &npcm7xx_pinctrl_desc, pctrl);
1970 if (IS_ERR(pctrl->pctldev)) {
1972 return PTR_ERR(pctrl->pctldev);
1975 ret = npcm7xx_gpio_register(pctrl);
1977 dev_err(pctrl->dev, "Failed to register gpio %u\n", ret);