Lines Matching full:bank

351  * given a pin number that is local to a pin controller, find out the pin bank
352 * and the register base of the pin bank.
356 struct samsung_pin_bank **bank) in pin_to_reg_bank() argument
368 if (bank) in pin_to_reg_bank()
369 *bank = b; in pin_to_reg_bank()
378 struct samsung_pin_bank *bank; in samsung_pinmux_setup() local
390 pin_to_reg_bank(drvdata, grp->pins[0], &reg, &pin_offset, &bank); in samsung_pinmux_setup()
391 type = bank->type; in samsung_pinmux_setup()
406 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_pinmux_setup()
413 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_pinmux_setup()
442 struct samsung_pin_bank *bank; in samsung_pinconf_rw() local
451 pin_to_reg_bank(drvdata, pin, &reg_base, &pin_offset, &bank); in samsung_pinconf_rw()
452 type = bank->type; in samsung_pinconf_rw()
466 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_pinconf_rw()
483 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_pinconf_rw()
552 * The samsung_gpio_set_vlaue() should be called with "bank->slock" held
558 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_set_value() local
559 const struct samsung_pin_bank_type *type = bank->type; in samsung_gpio_set_value()
563 reg = bank->pctl_base + bank->pctl_offset; in samsung_gpio_set_value()
575 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_set() local
576 struct samsung_pinctrl_drv_data *drvdata = bank->drvdata; in samsung_gpio_set()
584 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_gpio_set()
586 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_gpio_set()
596 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_get() local
597 const struct samsung_pin_bank_type *type = bank->type; in samsung_gpio_get()
598 struct samsung_pinctrl_drv_data *drvdata = bank->drvdata; in samsung_gpio_get()
601 reg = bank->pctl_base + bank->pctl_offset; in samsung_gpio_get()
619 * The samsung_gpio_set_direction() should be called with "bank->slock" held
628 struct samsung_pin_bank *bank; in samsung_gpio_set_direction() local
632 bank = gpiochip_get_data(gc); in samsung_gpio_set_direction()
633 type = bank->type; in samsung_gpio_set_direction()
635 reg = bank->pctl_base + bank->pctl_offset in samsung_gpio_set_direction()
658 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_direction_input() local
659 struct samsung_pinctrl_drv_data *drvdata = bank->drvdata; in samsung_gpio_direction_input()
669 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_gpio_direction_input()
671 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_gpio_direction_input()
682 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_direction_output() local
683 struct samsung_pinctrl_drv_data *drvdata = bank->drvdata; in samsung_gpio_direction_output()
693 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_gpio_direction_output()
696 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_gpio_direction_output()
709 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_to_irq() local
712 if (!bank->irq_domain) in samsung_gpio_to_irq()
715 virq = irq_create_mapping(bank->irq_domain, offset); in samsung_gpio_to_irq()
722 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_add_pin_ranges() local
724 bank->grange.name = bank->name; in samsung_add_pin_ranges()
725 bank->grange.id = bank->id; in samsung_add_pin_ranges()
726 bank->grange.pin_base = bank->pin_base; in samsung_add_pin_ranges()
727 bank->grange.base = gc->base; in samsung_add_pin_ranges()
728 bank->grange.npins = bank->nr_pins; in samsung_add_pin_ranges()
729 bank->grange.gc = &bank->gpio_chip; in samsung_add_pin_ranges()
730 pinctrl_add_gpio_range(bank->drvdata->pctl_dev, &bank->grange); in samsung_add_pin_ranges()
921 int pin, bank, ret; in samsung_pinctrl_register() local
952 /* for each pin, the name of the pin is pin-bank name + pin number */ in samsung_pinctrl_register()
953 for (bank = 0; bank < drvdata->nr_banks; bank++) { in samsung_pinctrl_register()
954 pin_bank = &drvdata->pin_banks[bank]; in samsung_pinctrl_register()
955 pin_bank->id = bank; in samsung_pinctrl_register()
982 struct samsung_pin_bank *bank = drvdata->pin_banks; in samsung_pinctrl_unregister() local
985 for (i = 0; i < drvdata->nr_banks; ++i, ++bank) in samsung_pinctrl_unregister()
986 pinctrl_remove_gpio_range(drvdata->pctl_dev, &bank->grange); in samsung_pinctrl_unregister()
1007 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_set_pud() local
1008 const struct samsung_pin_bank_type *type = bank->type; in samsung_gpio_set_pud()
1012 reg = bank->pctl_base + bank->pctl_offset; in samsung_gpio_set_pud()
1027 struct samsung_pin_bank *bank = gpiochip_get_data(gc); in samsung_gpio_set_config() local
1028 struct samsung_pinctrl_drv_data *drvdata = bank->drvdata; in samsung_gpio_set_config()
1053 raw_spin_lock_irqsave(&bank->slock, flags); in samsung_gpio_set_config()
1055 raw_spin_unlock_irqrestore(&bank->slock, flags); in samsung_gpio_set_config()
1079 struct samsung_pin_bank *bank = drvdata->pin_banks; in samsung_gpiolib_register() local
1084 for (i = 0; i < drvdata->nr_banks; ++i, ++bank) { in samsung_gpiolib_register()
1085 bank->gpio_chip = samsung_gpiolib_chip; in samsung_gpiolib_register()
1087 gc = &bank->gpio_chip; in samsung_gpiolib_register()
1089 gc->ngpio = bank->nr_pins; in samsung_gpiolib_register()
1091 gc->fwnode = bank->fwnode; in samsung_gpiolib_register()
1092 gc->label = bank->name; in samsung_gpiolib_register()
1094 ret = devm_gpiochip_add_data(&pdev->dev, gc, bank); in samsung_gpiolib_register()
1129 struct samsung_pin_bank *bank; in samsung_banks_node_put() local
1132 bank = d->pin_banks; in samsung_banks_node_put()
1133 for (i = 0; i < d->nr_banks; ++i, ++bank) in samsung_banks_node_put()
1134 fwnode_handle_put(bank->fwnode); in samsung_banks_node_put()
1139 * skipping optional "-gpio" node suffix. When found, assign node to the bank.
1143 const char *suffix = "-gpio-bank"; in samsung_banks_node_get()
1144 struct samsung_pin_bank *bank; in samsung_banks_node_get() local
1146 /* Pin bank names are up to 4 characters */ in samsung_banks_node_get()
1151 bank = d->pin_banks; in samsung_banks_node_get()
1152 for (i = 0; i < d->nr_banks; ++i, ++bank) { in samsung_banks_node_get()
1153 strscpy(node_name, bank->name, sizeof(node_name)); in samsung_banks_node_get()
1156 dev_err(dev, "Too long pin bank name '%s', ignoring\n", in samsung_banks_node_get()
1157 bank->name); in samsung_banks_node_get()
1166 if (of_node_name_eq(np, bank->name)) in samsung_banks_node_get()
1171 bank->fwnode = child; in samsung_banks_node_get()
1173 dev_warn(dev, "Missing node for bank %s - invalid DTB\n", in samsung_banks_node_get()
1174 bank->name); in samsung_banks_node_get()
1186 struct samsung_pin_bank *bank; in samsung_pinctrl_get_soc_data() local
1220 bank = d->pin_banks; in samsung_pinctrl_get_soc_data()
1222 for (i = 0; i < ctrl->nr_banks; ++i, ++bdata, ++bank) { in samsung_pinctrl_get_soc_data()
1223 bank->type = bdata->type; in samsung_pinctrl_get_soc_data()
1224 bank->pctl_offset = bdata->pctl_offset; in samsung_pinctrl_get_soc_data()
1225 bank->nr_pins = bdata->nr_pins; in samsung_pinctrl_get_soc_data()
1226 bank->eint_func = bdata->eint_func; in samsung_pinctrl_get_soc_data()
1227 bank->eint_type = bdata->eint_type; in samsung_pinctrl_get_soc_data()
1228 bank->eint_mask = bdata->eint_mask; in samsung_pinctrl_get_soc_data()
1229 bank->eint_offset = bdata->eint_offset; in samsung_pinctrl_get_soc_data()
1230 bank->eint_con_offset = bdata->eint_con_offset; in samsung_pinctrl_get_soc_data()
1231 bank->eint_mask_offset = bdata->eint_mask_offset; in samsung_pinctrl_get_soc_data()
1232 bank->eint_pend_offset = bdata->eint_pend_offset; in samsung_pinctrl_get_soc_data()
1233 bank->name = bdata->name; in samsung_pinctrl_get_soc_data()
1235 raw_spin_lock_init(&bank->slock); in samsung_pinctrl_get_soc_data()
1236 bank->drvdata = d; in samsung_pinctrl_get_soc_data()
1237 bank->pin_base = d->nr_pins; in samsung_pinctrl_get_soc_data()
1238 d->nr_pins += bank->nr_pins; in samsung_pinctrl_get_soc_data()
1240 bank->eint_base = virt_base[0]; in samsung_pinctrl_get_soc_data()
1241 bank->pctl_base = virt_base[bdata->pctl_res_idx]; in samsung_pinctrl_get_soc_data()
1345 struct samsung_pin_bank *bank = &drvdata->pin_banks[i]; in samsung_pinctrl_suspend() local
1346 const void __iomem *reg = bank->pctl_base + bank->pctl_offset; in samsung_pinctrl_suspend()
1347 const u8 *offs = bank->type->reg_offset; in samsung_pinctrl_suspend()
1348 const u8 *widths = bank->type->fld_width; in samsung_pinctrl_suspend()
1357 bank->pm_save[type] = readl(reg + offs[type]); in samsung_pinctrl_suspend()
1359 if (widths[PINCFG_TYPE_FUNC] * bank->nr_pins > 32) { in samsung_pinctrl_suspend()
1361 bank->pm_save[PINCFG_TYPE_NUM] = in samsung_pinctrl_suspend()
1364 bank->name, reg, in samsung_pinctrl_suspend()
1365 bank->pm_save[PINCFG_TYPE_FUNC], in samsung_pinctrl_suspend()
1366 bank->pm_save[PINCFG_TYPE_NUM]); in samsung_pinctrl_suspend()
1368 pr_debug("Save %s @ %p (con %#010x)\n", bank->name, in samsung_pinctrl_suspend()
1369 reg, bank->pm_save[PINCFG_TYPE_FUNC]); in samsung_pinctrl_suspend()
1412 struct samsung_pin_bank *bank = &drvdata->pin_banks[i]; in samsung_pinctrl_resume() local
1413 void __iomem *reg = bank->pctl_base + bank->pctl_offset; in samsung_pinctrl_resume()
1414 const u8 *offs = bank->type->reg_offset; in samsung_pinctrl_resume()
1415 const u8 *widths = bank->type->fld_width; in samsung_pinctrl_resume()
1422 if (widths[PINCFG_TYPE_FUNC] * bank->nr_pins > 32) { in samsung_pinctrl_resume()
1425 bank->name, reg, in samsung_pinctrl_resume()
1428 bank->pm_save[PINCFG_TYPE_FUNC], in samsung_pinctrl_resume()
1429 bank->pm_save[PINCFG_TYPE_NUM]); in samsung_pinctrl_resume()
1430 writel(bank->pm_save[PINCFG_TYPE_NUM], in samsung_pinctrl_resume()
1433 pr_debug("%s @ %p (con %#010x => %#010x)\n", bank->name, in samsung_pinctrl_resume()
1435 bank->pm_save[PINCFG_TYPE_FUNC]); in samsung_pinctrl_resume()
1439 writel(bank->pm_save[type], reg + offs[type]); in samsung_pinctrl_resume()