Lines Matching refs:domain
76 static int meson_get_bank(struct meson_domain *domain, unsigned int pin, in meson_get_bank() argument
81 for (i = 0; i < domain->data->num_banks; i++) { in meson_get_bank()
82 if (pin >= domain->data->banks[i].first && in meson_get_bank()
83 pin <= domain->data->banks[i].last) { in meson_get_bank()
84 *bank = &domain->data->banks[i]; in meson_get_bank()
103 struct meson_domain **domain, in meson_get_domain_and_bank() argument
113 *domain = d; in meson_get_domain_and_bank()
196 struct meson_domain *domain; in meson_pmx_disable_other_groups() local
207 domain = &pc->domains[group->domain]; in meson_pmx_disable_other_groups()
208 regmap_update_bits(domain->reg_mux, in meson_pmx_disable_other_groups()
222 struct meson_domain *domain = &pc->domains[group->domain]; in meson_pmx_set_mux() local
237 ret = regmap_update_bits(domain->reg_mux, group->reg * 4, in meson_pmx_set_mux()
293 struct meson_domain *domain; in meson_pinconf_set() local
300 ret = meson_get_domain_and_bank(pc, pin, &domain, &bank); in meson_pinconf_set()
313 ret = regmap_update_bits(domain->reg_pull, reg, in meson_pinconf_set()
323 ret = regmap_update_bits(domain->reg_pullen, reg, in meson_pinconf_set()
329 ret = regmap_update_bits(domain->reg_pull, reg, in meson_pinconf_set()
339 ret = regmap_update_bits(domain->reg_pullen, reg, in meson_pinconf_set()
345 ret = regmap_update_bits(domain->reg_pull, reg, in meson_pinconf_set()
360 struct meson_domain *domain; in meson_pinconf_get_pull() local
365 ret = meson_get_domain_and_bank(pc, pin, &domain, &bank); in meson_pinconf_get_pull()
371 ret = regmap_read(domain->reg_pullen, reg, &val); in meson_pinconf_get_pull()
380 ret = regmap_read(domain->reg_pull, reg, &val); in meson_pinconf_get_pull()
463 struct meson_domain *domain = to_meson_domain(chip); in meson_gpio_free() local
465 pinctrl_free_gpio(domain->data->pin_base + gpio); in meson_gpio_free()
470 struct meson_domain *domain = to_meson_domain(chip); in meson_gpio_direction_input() local
475 pin = domain->data->pin_base + gpio; in meson_gpio_direction_input()
476 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_direction_input()
482 return regmap_update_bits(domain->reg_gpio, reg, BIT(bit), BIT(bit)); in meson_gpio_direction_input()
488 struct meson_domain *domain = to_meson_domain(chip); in meson_gpio_direction_output() local
493 pin = domain->data->pin_base + gpio; in meson_gpio_direction_output()
494 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_direction_output()
499 ret = regmap_update_bits(domain->reg_gpio, reg, BIT(bit), 0); in meson_gpio_direction_output()
504 return regmap_update_bits(domain->reg_gpio, reg, BIT(bit), in meson_gpio_direction_output()
510 struct meson_domain *domain = to_meson_domain(chip); in meson_gpio_set() local
515 pin = domain->data->pin_base + gpio; in meson_gpio_set()
516 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_set()
521 regmap_update_bits(domain->reg_gpio, reg, BIT(bit), in meson_gpio_set()
527 struct meson_domain *domain = to_meson_domain(chip); in meson_gpio_get() local
532 pin = domain->data->pin_base + gpio; in meson_gpio_get()
533 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_get()
538 regmap_read(domain->reg_gpio, reg, &val); in meson_gpio_get()
558 struct meson_domain *domain; in meson_gpiolib_register() local
562 domain = &pc->domains[i]; in meson_gpiolib_register()
564 domain->chip.label = domain->data->name; in meson_gpiolib_register()
565 domain->chip.dev = pc->dev; in meson_gpiolib_register()
566 domain->chip.request = meson_gpio_request; in meson_gpiolib_register()
567 domain->chip.free = meson_gpio_free; in meson_gpiolib_register()
568 domain->chip.direction_input = meson_gpio_direction_input; in meson_gpiolib_register()
569 domain->chip.direction_output = meson_gpio_direction_output; in meson_gpiolib_register()
570 domain->chip.get = meson_gpio_get; in meson_gpiolib_register()
571 domain->chip.set = meson_gpio_set; in meson_gpiolib_register()
572 domain->chip.base = domain->data->pin_base; in meson_gpiolib_register()
573 domain->chip.ngpio = domain->data->num_pins; in meson_gpiolib_register()
574 domain->chip.can_sleep = false; in meson_gpiolib_register()
575 domain->chip.of_node = domain->of_node; in meson_gpiolib_register()
576 domain->chip.of_gpio_n_cells = 2; in meson_gpiolib_register()
578 ret = gpiochip_add(&domain->chip); in meson_gpiolib_register()
581 domain->data->name); in meson_gpiolib_register()
585 ret = gpiochip_add_pin_range(&domain->chip, dev_name(pc->dev), in meson_gpiolib_register()
586 0, domain->data->pin_base, in meson_gpiolib_register()
587 domain->chip.ngpio); in meson_gpiolib_register()
650 struct meson_domain *domain; in meson_pinctrl_parse_dt() local
673 domain = &pc->domains[i]; in meson_pinctrl_parse_dt()
675 domain->data = meson_get_domain_data(pc, np); in meson_pinctrl_parse_dt()
676 if (!domain->data) { in meson_pinctrl_parse_dt()
682 domain->of_node = np; in meson_pinctrl_parse_dt()
684 domain->reg_mux = meson_map_resource(pc, np, "mux"); in meson_pinctrl_parse_dt()
685 if (IS_ERR(domain->reg_mux)) { in meson_pinctrl_parse_dt()
687 return PTR_ERR(domain->reg_mux); in meson_pinctrl_parse_dt()
690 domain->reg_pull = meson_map_resource(pc, np, "pull"); in meson_pinctrl_parse_dt()
691 if (IS_ERR(domain->reg_pull)) { in meson_pinctrl_parse_dt()
693 return PTR_ERR(domain->reg_pull); in meson_pinctrl_parse_dt()
696 domain->reg_pullen = meson_map_resource(pc, np, "pull-enable"); in meson_pinctrl_parse_dt()
698 if (IS_ERR(domain->reg_pullen)) in meson_pinctrl_parse_dt()
699 domain->reg_pullen = domain->reg_pull; in meson_pinctrl_parse_dt()
701 domain->reg_gpio = meson_map_resource(pc, np, "gpio"); in meson_pinctrl_parse_dt()
702 if (IS_ERR(domain->reg_gpio)) { in meson_pinctrl_parse_dt()
704 return PTR_ERR(domain->reg_gpio); in meson_pinctrl_parse_dt()