Lines Matching refs:pci
108 struct rk628_pctrl_info *pci; member
411 struct rk628_pctrl_info *pci = bank->pci; in rk628_gpio_get() local
417 ret = regmap_read(pci->regmap, data_reg, &val); in rk628_gpio_get()
419 dev_err(pci->dev, "%s: regmap read failed!\n", __func__); in rk628_gpio_get()
424 dev_dbg(pci->dev, "%s bank->name=%s dir_reg=0x%x offset=%x value=%x\n", in rk628_gpio_get()
435 struct rk628_pctrl_info *pci = bank->pci; in rk628_gpio_set() local
450 ret = regmap_write(pci->regmap, data_reg, val); in rk628_gpio_set()
474 struct rk628_pctrl_info *pci = bank->pci; in rk628_gpio_get_direction() local
485 ret = regmap_read(pci->regmap, dir_reg, &val); in rk628_gpio_get_direction()
487 dev_err(pci->dev, "%s: regmap read failed!\n", __func__); in rk628_gpio_get_direction()
528 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_groups_count() local
530 return pci->num_groups; in rk628_pinctrl_get_groups_count()
536 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_group_name() local
538 return pci->groups[group].name; in rk628_pinctrl_get_group_name()
546 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_group_pins() local
548 *pins = pci->groups[group].pins; in rk628_pinctrl_get_group_pins()
549 *num_pins = pci->groups[group].npins; in rk628_pinctrl_get_group_pins()
564 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_funcs_count() local
566 return pci->num_functions; in rk628_pinctrl_get_funcs_count()
572 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_func_name() local
574 return pci->functions[function].name; in rk628_pinctrl_get_func_name()
582 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_get_func_groups() local
584 *groups = pci->functions[function].groups; in rk628_pinctrl_get_func_groups()
585 *num_groups = pci->functions[function].ngroups; in rk628_pinctrl_get_func_groups()
590 static int rk628_calc_mux_offset(struct rk628_pctrl_info *pci, int mux, int reg, int offset) in rk628_calc_mux_offset() argument
596 regmap_read(pci->grf_regmap, reg, &orig); in rk628_calc_mux_offset()
645 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinctrl_set_mux() local
647 int mux = pci->functions[func_selector].mux_option; in rk628_pinctrl_set_mux()
648 int offset = pci->groups[group_selector].pins[0] % BANK_OFFSET; in rk628_pinctrl_set_mux()
649 int reg = pci->groups[group_selector].iomux_base; in rk628_pinctrl_set_mux()
651 dev_dbg(pci->dev, "functions[%d]:%s mux=%s\n", in rk628_pinctrl_set_mux()
652 func_selector, pci->functions[func_selector].name, in rk628_pinctrl_set_mux()
655 val = rk628_calc_mux_offset(pci, mux, reg, offset); in rk628_pinctrl_set_mux()
657 dev_dbg(pci->dev, "groups[%d]:%s pin-number=%d reg=0x%x write-val=0x%8x\n", in rk628_pinctrl_set_mux()
659 pci->groups[group_selector].name, in rk628_pinctrl_set_mux()
660 pci->groups[group_selector].pins[0], in rk628_pinctrl_set_mux()
663 ret = regmap_write(pci->grf_regmap, reg, val); in rk628_pinctrl_set_mux()
665 dev_err(pci->dev, "%s regmap write failed!\n", __func__); in rk628_pinctrl_set_mux()
674 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pmx_gpio_set_direction() local
695 ret = regmap_write(pci->regmap, dir_reg, val); in rk628_pmx_gpio_set_direction()
697 dev_err(pci->dev, "regmap update failed!\n"); in rk628_pmx_gpio_set_direction()
714 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinconf_get() local
724 dev_err(pci->dev, "Properties not supported\n"); in rk628_pinconf_get()
733 static int rk628_set_slew_rate(struct rk628_pctrl_info *pci, int pin, int speed) in rk628_set_slew_rate() argument
768 dev_err(pci->dev, "pin%u don't support set slew rate\n", pin); in rk628_set_slew_rate()
777 dev_dbg(pci->dev, " offset=%d 0x%x\n", offset, val); in rk628_set_slew_rate()
779 ret = regmap_write(pci->grf_regmap, GRF_GPIO_SR_CON, val); in rk628_set_slew_rate()
781 dev_err(pci->dev, "%s:regmap write failed! pin%u\n", in rk628_set_slew_rate()
787 static int rk628_calc_pull_reg_and_value(struct rk628_pctrl_info *pci, in rk628_calc_pull_reg_and_value() argument
793 struct pinctrl_gpio_range *range = pinctrl_find_gpio_range_from_pin(pci->pctl, pin); in rk628_calc_pull_reg_and_value()
802 dev_err(pci->dev, "pin%u don't support pull up!\n", in rk628_calc_pull_reg_and_value()
808 dev_err(pci->dev, "pin%u don't support pull!\n", in rk628_calc_pull_reg_and_value()
816 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_pull_reg_and_value()
823 dev_err(pci->dev, "pin%u don't support pull up!\n", in rk628_calc_pull_reg_and_value()
829 dev_err(pci->dev, "pin%u don't support pull!\n", in rk628_calc_pull_reg_and_value()
837 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_pull_reg_and_value()
852 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_pull_reg_and_value()
859 dev_err(pci->dev, "pin%u don't support pull up!\n", in rk628_calc_pull_reg_and_value()
863 dev_err(pci->dev, "pin%u don't support pull down!\n", in rk628_calc_pull_reg_and_value()
879 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_pull_reg_and_value()
891 static int rk628_calc_strength_reg_and_value(struct rk628_pctrl_info *pci, in rk628_calc_strength_reg_and_value() argument
897 struct pinctrl_gpio_range *range = pinctrl_find_gpio_range_from_pin(pci->pctl, pin); in rk628_calc_strength_reg_and_value()
920 dev_err(pci->dev, "pin%u don't support driver strength settings!\n", in rk628_calc_strength_reg_and_value()
929 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_strength_reg_and_value()
938 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_strength_reg_and_value()
950 static int rk628_calc_schmitt_reg_and_value(struct rk628_pctrl_info *pci, in rk628_calc_schmitt_reg_and_value() argument
956 struct pinctrl_gpio_range *range = pinctrl_find_gpio_range_from_pin(pci->pctl, pin); in rk628_calc_schmitt_reg_and_value()
971 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_schmitt_reg_and_value()
980 dev_dbg(pci->dev, "pin%u reg=0x%8x val=0x%8x\n", in rk628_calc_schmitt_reg_and_value()
989 dev_err(pci->dev, "pin%u don't support schmitt settings!\n", in rk628_calc_schmitt_reg_and_value()
995 static int rk628_set_pull(struct rk628_pctrl_info *pci, int pin, int pull) in rk628_set_pull() argument
999 ret = rk628_calc_pull_reg_and_value(pci, pin, pull, ®, &val); in rk628_set_pull()
1001 dev_err(pci->dev, "pin%u can not find reg or not support!\n", pin); in rk628_set_pull()
1005 ret = regmap_write(pci->grf_regmap, reg, val); in rk628_set_pull()
1008 dev_err(pci->dev, "%s:regmap write failed! pin%u\n", in rk628_set_pull()
1014 static int rk628_set_drive_perpin(struct rk628_pctrl_info *pci, int pin, int strength) in rk628_set_drive_perpin() argument
1018 ret = rk628_calc_strength_reg_and_value(pci, pin, strength, ®, &val); in rk628_set_drive_perpin()
1020 dev_err(pci->dev, "pin%u can not find reg or not support!\n", pin); in rk628_set_drive_perpin()
1024 ret = regmap_write(pci->grf_regmap, reg, val); in rk628_set_drive_perpin()
1027 dev_err(pci->dev, "%s:regmap write failed! pin%u\n", in rk628_set_drive_perpin()
1033 static int rk628_set_schmitt(struct rk628_pctrl_info *pci, int pin, int enable) in rk628_set_schmitt() argument
1037 ret = rk628_calc_schmitt_reg_and_value(pci, pin, enable, ®, &val); in rk628_set_schmitt()
1039 dev_err(pci->dev, "pin%u can not find reg or not support!\n", pin); in rk628_set_schmitt()
1043 ret = regmap_write(pci->grf_regmap, reg, val); in rk628_set_schmitt()
1046 dev_err(pci->dev, "%s:regmap write failed! pin%u\n", in rk628_set_schmitt()
1056 struct rk628_pctrl_info *pci = pinctrl_dev_get_drvdata(pctldev); in rk628_pinconf_set() local
1066 rk628_set_drive_perpin(pci, pin, arg); in rk628_pinconf_set()
1069 rk628_set_pull(pci, pin, GPIO_HIGH_Z); in rk628_pinconf_set()
1072 dev_err(pci->dev, in rk628_pinconf_set()
1076 rk628_set_pull(pci, pin, GPIO_PULL_UP); in rk628_pinconf_set()
1079 rk628_set_pull(pci, pin, GPIO_PULL_DOWN); in rk628_pinconf_set()
1082 rk628_set_slew_rate(pci, pin, arg); in rk628_pinconf_set()
1085 rk628_set_schmitt(pci, pin, arg); in rk628_pinconf_set()
1089 struct pinctrl_gpio_range *range = pinctrl_find_gpio_range_from_pin(pci->pctl, pin); in rk628_pinconf_set()
1095 dev_err(pci->dev, "Properties not supported param=%d\n", param); in rk628_pinconf_set()
1117 struct rk628_pctrl_info *pci, in rk628_pinctrl_create_function() argument
1171 struct rk628_pctrl_info *pci) in rk628_pinctrl_parse_gpiobank() argument
1183 bank = pci->pin_banks; in rk628_pinctrl_parse_gpiobank()
1184 for (i = 0; i < pci->nr_banks; ++i, ++bank) { in rk628_pinctrl_parse_gpiobank()
1197 if (count == pci->nr_banks) in rk628_pinctrl_parse_gpiobank()
1206 struct rk628_pctrl_info *pci, in rk628_pinctrl_create_functions() argument
1258 ret = rk628_pinctrl_create_function(dev, pci, in rk628_pinctrl_create_functions()
1280 struct rk628_pctrl_info *pci) in rk628_pinctrl_parse_dt() argument
1287 ret = rk628_pinctrl_parse_gpiobank(dev, pci); in rk628_pinctrl_parse_dt()
1291 functions = rk628_pinctrl_create_functions(dev, pci, &func_cnt); in rk628_pinctrl_parse_dt()
1297 pci->functions = functions; in rk628_pinctrl_parse_dt()
1298 pci->num_functions = func_cnt; in rk628_pinctrl_parse_dt()
1360 struct rk628_pctrl_info *pci = bank->pci; in rk628_irq_set_type() local
1396 dev_err(pci->dev, "irq type invalid!\n"); in rk628_irq_set_type()
1414 struct rk628_pctrl_info *pci = bank->pci; in rk628_irq_sync_unlock() local
1431 ret = regmap_write(pci->regmap, level, in rk628_irq_sync_unlock()
1434 dev_err(pci->dev, "regmap read failed! reg=0x%x irq=%d\n", in rk628_irq_sync_unlock()
1437 ret = regmap_write(pci->regmap, polarity, in rk628_irq_sync_unlock()
1440 dev_err(pci->dev, "regmap read failed! reg=0x%x irq=%d\n", in rk628_irq_sync_unlock()
1443 ret = regmap_write(pci->regmap, bothedge, in rk628_irq_sync_unlock()
1446 dev_err(pci->dev, "regmap read failed! reg=0x%x irq=%d\n", in rk628_irq_sync_unlock()
1449 ret = regmap_write(pci->regmap, inten, in rk628_irq_sync_unlock()
1452 dev_err(pci->dev, "regmap read failed! reg=0x%x irq=%d\n", in rk628_irq_sync_unlock()
1494 struct rk628_pctrl_info *pci = bank->pci; in rk628_irq_demux_thread() local
1500 ret = regmap_read(pci->regmap, bank->reg_base + GPIO_INT_STATUS, &pend); in rk628_irq_demux_thread()
1502 dev_err(pci->dev, "regmap read failed! line=%d\n", __LINE__); in rk628_irq_demux_thread()
1506 ret = regmap_write(pci->regmap, bank->reg_base + GPIO_PORTS_EOI_L, in rk628_irq_demux_thread()
1509 dev_err(pci->dev, "regmap read failed! line=%d\n", __LINE__); in rk628_irq_demux_thread()
1511 ret = regmap_write(pci->regmap, bank->reg_base + GPIO_PORTS_EOI_H, in rk628_irq_demux_thread()
1514 dev_err(pci->dev, "regmap read failed! line=%d\n", __LINE__); in rk628_irq_demux_thread()
1524 dev_err(pci->dev, "unmapped irq %d\n", irq); in rk628_irq_demux_thread()
1536 struct rk628_pctrl_info *pci) in rk628_interrupts_register() argument
1538 struct rk628_pin_bank *bank = pci->pin_banks; in rk628_interrupts_register()
1542 for (i = 0; i < pci->nr_banks; ++i, ++bank) { in rk628_interrupts_register()
1582 struct rk628_pctrl_info *pci) in rk628_gpiolib_register() argument
1584 struct rk628_pin_bank *bank = pci->pin_banks; in rk628_gpiolib_register()
1588 for (i = 0; i < pci->nr_banks; ++i, ++bank) { in rk628_gpiolib_register()
1590 bank->pci = pci; in rk628_gpiolib_register()
1613 struct rk628_pctrl_info *pci; in rk628_pinctrl_probe() local
1618 pci = devm_kzalloc(&pdev->dev, sizeof(*pci), GFP_KERNEL); in rk628_pinctrl_probe()
1619 if (!pci) in rk628_pinctrl_probe()
1622 pci->dev = &pdev->dev; in rk628_pinctrl_probe()
1623 pci->grf_regmap = rk628->grf; in rk628_pinctrl_probe()
1625 pci->pinctrl_desc = rk628_pinctrl_desc; in rk628_pinctrl_probe()
1626 pci->groups = rk628_pin_groups; in rk628_pinctrl_probe()
1627 pci->num_groups = ARRAY_SIZE(rk628_pin_groups); in rk628_pinctrl_probe()
1628 pci->pinctrl_desc.pins = rk628_pins_desc; in rk628_pinctrl_probe()
1629 pci->pinctrl_desc.npins = ARRAY_SIZE(rk628_pins_desc); in rk628_pinctrl_probe()
1630 pci->pin_banks = rk628_pin_banks; in rk628_pinctrl_probe()
1631 pci->nr_banks = ARRAY_SIZE(rk628_pin_banks), in rk628_pinctrl_probe()
1633 platform_set_drvdata(pdev, pci); in rk628_pinctrl_probe()
1635 ret = rk628_pinctrl_parse_dt(pdev, pci); in rk628_pinctrl_probe()
1639 pci->regmap = devm_regmap_init_i2c(rk628->client, in rk628_pinctrl_probe()
1641 if (IS_ERR(pci->regmap)) { in rk628_pinctrl_probe()
1642 ret = PTR_ERR(pci->regmap); in rk628_pinctrl_probe()
1648 ret = rk628_gpiolib_register(pdev, pci); in rk628_pinctrl_probe()
1655 pci->pctl = devm_pinctrl_register(&pdev->dev, &pci->pinctrl_desc, pci); in rk628_pinctrl_probe()
1656 if (IS_ERR(pci->pctl)) { in rk628_pinctrl_probe()
1658 return PTR_ERR(pci->pctl); in rk628_pinctrl_probe()
1661 for (bank = 0; bank < pci->nr_banks; ++bank) { in rk628_pinctrl_probe()
1662 pin_bank = &pci->pin_banks[bank]; in rk628_pinctrl_probe()
1669 pinctrl_add_gpio_range(pci->pctl, &pin_bank->grange); in rk628_pinctrl_probe()
1672 rk628_interrupts_register(pdev, pci); in rk628_pinctrl_probe()