Lines Matching refs:pci
197 struct rk806_pctrl_info *pci = gpiochip_get_data(chip);
200 if (!pci->pin_cfg[offset].val_msk) {
201 dev_dbg(pci->dev, "getting gpio%d value is not support\n",
206 ret = regmap_read(pci->rk806->regmap, pci->pin_cfg[offset].reg, &val);
208 dev_err(pci->dev, "get gpio%d value failed\n", offset);
212 return !!(val & pci->pin_cfg[offset].val_msk);
219 struct rk806_pctrl_info *pci = gpiochip_get_data(chip);
222 if (!pci->pin_cfg[offset].val_msk)
225 ret = regmap_update_bits(pci->rk806->regmap,
226 pci->pin_cfg[offset].reg,
227 pci->pin_cfg[offset].val_msk,
228 value ? pci->pin_cfg[offset].val_msk : 0);
230 dev_err(pci->dev, "set gpio%d value %d failed\n",
251 struct rk806_pctrl_info *pci = gpiochip_get_data(chip);
256 if (!pci->pin_cfg[offset].dir_msk)
259 ret = regmap_read(pci->rk806->regmap,
260 pci->pin_cfg[offset].reg,
263 dev_err(pci->dev, "get gpio%d direction failed\n", offset);
267 return !(val & pci->pin_cfg[offset].dir_msk);
287 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
289 return pci->num_pin_groups;
295 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
297 return pci->groups[group].name;
305 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
307 *pins = pci->groups[group].pins;
308 *num_pins = pci->groups[group].npins;
323 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
325 return pci->num_functions;
331 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
333 return pci->functions[function].name;
341 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
343 *groups = pci->functions[function].groups;
344 *num_groups = pci->functions[function].ngroups;
353 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
356 if (!pci->pin_cfg[offset].fun_msk)
359 mux <<= ffs(pci->pin_cfg[offset].fun_msk) - 1;
360 ret = regmap_update_bits(pci->rk806->regmap,
361 pci->pin_cfg[offset].fun_reg,
362 pci->pin_cfg[offset].fun_msk, mux);
365 dev_err(pci->dev, "set gpio%d func%d failed\n", offset, mux);
374 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
375 int mux = pci->functions[function].mux_option;
385 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
389 if (!pci->pin_cfg[offset].dir_msk)
392 ret = regmap_update_bits(pci->rk806->regmap,
393 pci->pin_cfg[offset].reg,
394 pci->pin_cfg[offset].dir_msk,
395 input ? 0 : pci->pin_cfg[offset].dir_msk);
397 dev_err(pci->dev, "set gpio%d direction failed\n", offset);
424 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
431 arg = rk806_gpio_get(&pci->gpio_chip, pin);
434 dev_err(pci->dev, "Properties not supported\n");
448 struct rk806_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev);
459 rk806_gpio_set(&pci->gpio_chip, pin, arg);
469 dev_err(pci->dev, "Properties not supported\n");
492 struct rk806_pctrl_info *pci;
496 pci = devm_kzalloc(&pdev->dev, sizeof(*pci), GFP_KERNEL);
497 if (!pci)
500 pci->dev = &pdev->dev;
503 pci->dev->of_node = np;
505 pci->dev->of_node = pdev->dev.parent->of_node;
506 pci->rk806 = dev_get_drvdata(pdev->dev.parent);
508 platform_set_drvdata(pdev, pci);
510 pci->pinctrl_desc = rk806_pinctrl_desc;
511 pci->gpio_chip = rk806_gpio_chip;
512 pci->pins = rk806_pins_desc;
513 pci->num_pins = ARRAY_SIZE(rk806_pins_desc);
514 pci->functions = rk806_pin_functions;
515 pci->num_functions = ARRAY_SIZE(rk806_pin_functions);
516 pci->groups = rk806_pin_groups;
517 pci->num_pin_groups = ARRAY_SIZE(rk806_pin_groups);
518 pci->pinctrl_desc.pins = rk806_pins_desc;
519 pci->pinctrl_desc.npins = ARRAY_SIZE(rk806_pins_desc);
520 pci->pin_cfg = rk806_gpio_cfgs;
521 pci->gpio_chip.ngpio = ARRAY_SIZE(rk806_gpio_cfgs);
523 pci->gpio_chip.parent = &pdev->dev;
526 pci->gpio_chip.of_node = np;
528 pci->gpio_chip.of_node = pdev->dev.parent->of_node;
531 ret = devm_gpiochip_add_data(&pdev->dev, &pci->gpio_chip, pci);
538 pci->pctl = devm_pinctrl_register(&pdev->dev, &pci->pinctrl_desc, pci);
539 if (IS_ERR(pci->pctl)) {
541 return PTR_ERR(pci->pctl);
545 ret = gpiochip_add_pin_range(&pci->gpio_chip,
549 pci->gpio_chip.ngpio);